<?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>155024</bug_id>
          
          <creation_ts>2016-03-04 10:12:51 -0800</creation_ts>
          <short_desc>[ES6] Implement Reflect.set without receiver support</short_desc>
          <delta_ts>2016-03-11 10:48:35 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155294</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170922</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-04 10:12:51 -0800</bug_when>
    <thetext>[ES6] Implement Reflect.set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170923</commentid>
    <comment_count>1</comment_count>
      <attachid>273011</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-04 10:14:32 -0800</bug_when>
    <thetext>Created attachment 273011
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170935</commentid>
    <comment_count>2</comment_count>
      <attachid>273016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-04 10:34:27 -0800</bug_when>
    <thetext>Created attachment 273016
Patch

WIP part2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170965</commentid>
    <comment_count>3</comment_count>
      <attachid>273020</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-04 11:53:45 -0800</bug_when>
    <thetext>Created attachment 273020
Patch

WIP part3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170967</commentid>
    <comment_count>4</comment_count>
      <attachid>273021</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-04 12:03:08 -0800</bug_when>
    <thetext>Created attachment 273021
Patch

WIP part4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170968</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-04 12:06:12 -0800</bug_when>
    <thetext>Attachment 273021 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_runtime.h:81:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.h:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.mm:157:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171219</commentid>
    <comment_count>6</comment_count>
      <attachid>273089</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-05 09:49:36 -0800</bug_when>
    <thetext>Created attachment 273089
Patch

WIP part5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171241</commentid>
    <comment_count>7</comment_count>
      <attachid>273091</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-05 12:25:34 -0800</bug_when>
    <thetext>Created attachment 273091
Patch

WIP part6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171244</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 12:36:52 -0800</bug_when>
    <thetext>Attachment 273091 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_runtime.h:81:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.h:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.mm:157:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 116 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171412</commentid>
    <comment_count>9</comment_count>
      <attachid>273135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-06 05:10:32 -0800</bug_when>
    <thetext>Created attachment 273135
Patch

WIP part7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171413</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-06 05:14:55 -0800</bug_when>
    <thetext>Attachment 273135 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_runtime.h:81:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.h:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.mm:157:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 116 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171426</commentid>
    <comment_count>11</comment_count>
      <attachid>273138</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-06 09:49:38 -0800</bug_when>
    <thetext>Created attachment 273138
Patch

WIP part9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173681</commentid>
    <comment_count>12</comment_count>
      <attachid>273715</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 02:59:51 -0800</bug_when>
    <thetext>Created attachment 273715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173682</commentid>
    <comment_count>13</comment_count>
      <attachid>273716</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 03:07:01 -0800</bug_when>
    <thetext>Created attachment 273716
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173683</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 03:09:33 -0800</bug_when>
    <thetext>Attachment 273716 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_runtime.h:81:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.h:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.mm:157:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173687</commentid>
    <comment_count>15</comment_count>
      <attachid>273717</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 03:22:25 -0800</bug_when>
    <thetext>Created attachment 273717
Patch

Rebased part2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173688</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 03:24:40 -0800</bug_when>
    <thetext>Attachment 273717 did not pass style-queue:


ERROR: Source/WebCore/bridge/objc/objc_runtime.h:81:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.h:82:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/bridge/objc/objc_runtime.mm:157:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173736</commentid>
    <comment_count>17</comment_count>
      <attachid>273717</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-11 09:13:49 -0800</bug_when>
    <thetext>Comment on attachment 273717
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173738</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 09:17:33 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 273717 [details]
&gt; Patch
&gt; 
&gt; r=me

Thank you for your review :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173744</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 09:28:40 -0800</bug_when>
    <thetext>Committed r198023: &lt;http://trac.webkit.org/changeset/198023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173787</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 10:42:44 -0800</bug_when>
    <thetext>Oops, I&apos;ll update the binding test results soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173790</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-11 10:48:35 -0800</bug_when>
    <thetext>Committed r198028: &lt;http://trac.webkit.org/changeset/198028&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273011</attachid>
            <date>2016-03-04 10:14:32 -0800</date>
            <delta_ts>2016-03-04 10:34:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160305031416.patch</filename>
            <type>text/plain</type>
            <size>135928</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NThiZDdjYjY4M2NmNzZjZGI5ZDNiZWIyZDc1Mjc4NmJkYjc0ZDc2Li45YWMxZjI1YjVjYjkwNzA0
ZmJjYmE3OTk3MGI5ZDllZDQ4MjU2ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMTYtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnB1dElubGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNE
YXRhVmlldzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dCk6CisgICAgICAgICog
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNO
b3RBbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNOb3RBbk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGlu
ZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0U2V0
dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RN
YXlCZUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dElubGluZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6
cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0
KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQpOgorICAg
ICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KToKKyAgICAg
ICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2ludFNldCk6
CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6cHV0RW50cnkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9i
amVjdDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwdXQpOgorICAg
ICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbik6CisgICAgICAgIChKU0M6
OlByb3h5T2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdFNldCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpzZXRMYXN0SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmlu
Z09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KToK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIHRlc3RzL2VzNi55
YW1sOgorCiAyMDE2LTAzLTA0ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwu
Y29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gTGV4aWNhbCBiaW5k
ICJzdXBlciIgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiBpbiBnZW5lcmF0b3IuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGFkZGQyMTk4
NjMzOWUzYzFkMGIxZTQwY2UyYmFlN2Y3Y2RiN2Y3NmQuLmU5NTYzZjU0Y2VhOGIyNjNiMTQzMzU2
NzIxZDRjZGRkNzljNWU0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCkBAIC0xODEsOCArMTgxLDggQEAgY2xhc3MgSlNDYWxsYmFja09iamVjdCA6
IHB1YmxpYyBQYXJlbnQgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgCi0gICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDZlMGE2Y2ViNGJlYjc5N2VhZmQxNjc5ODhl
YzRkOGE3NWQ0MzE1OTguLmMxYTZkNzQ5NmY1Njc3ZmNiNGMzZDk1ODc3M2U1YWQ1YzU3YzM5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC0yMjIsNyArMjIyLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0NhbGxi
YWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsK
ICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yNDQsMTMgKzI0NCwxMyBA
QAogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsK
ICAgICAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1
ZXMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5
ID0gZW50cnktPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsK
QEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI3Miw5
ICsyNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXRTbG90KSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5KU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJy
aWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0yODQsNyArMjgzLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMzA2LDEzICszMDUsMTMgQEAKICAgICAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8
fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRp
Y1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykp
IHsKICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVl
cy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9
IGVudHJ5LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwpAQCAtMzIzLDcg
KzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTMzMSw3ICszMzAsNyBAQAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRp
Y0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlv
bnMoZXhlYykpIHsKICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9
IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNw
cAppbmRleCBjM2VmYmQ1NmRkNzBkZWFjYTM2MzM5MjRhOTIyOWQzNjEzOTMyMDE1Li4zNjUwMjRl
ODhmMjZhZTE0NmE5ZThiYTRjYzJmNGNiZDVhMzU0YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC05OCwxNSArOTgsMTUgQEAg
Ym9vbCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIERl
YnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3Bl
Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUt
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Nj
b3BlKCkpOwogICAgIHNsb3Quc2V0VGhpc1ZhbHVlKEpTVmFsdWUodGhpc09iamVjdCkpOwotICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
CiBib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmVmNjBjODk5ZjdmMTQ4M2Uz
MmNjN2E4MzgzM2UwYWY5NDA0NzJkYi4uZTM0ZjQ5N2Q3ZmIzMzNhYWVlNzYwOTI0Mzg2NGYzNWMw
YTc4YTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBj
NDViYmVjMTI5YjZiN2I4MDUzZmRhMDVlNWFiMDZiOGFmODdlYzA3Li5kZGU0OWYwODk3YjhjODMy
MzM4NWVmNjhmMTk3MGRjZGEwYzczZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNDE2LDcg
KzQxNiw3IEBAIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICAgICAg
cmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCBzbG90KTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDIy
YmM0M2Q5Yjk4MjdjYjlmMWQwMjc2ZjcwOWY3ZWE2YzIxMDM3MjcuLmQzNzZiNjMxOWE5NTQwOWNl
YzY5Yjg1MzExY2ZiZTA1OTM4NGU0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCkBAIC00OSwxMCArNDksMTAgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB0eXBlZGVmIENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIpKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIg
Z2V0Q29uc3RydWN0RGF0YTsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uUHRyKShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRGdW5jdGlvblB0cikoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgUHV0RnVuY3Rpb25QdHIgcHV0OwogCi0gICAgdHlwZWRlZiB2
b2lkICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHR5cGVkZWYg
Ym9vbCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUlu
ZGV4RnVuY3Rpb25QdHIgcHV0QnlJbmRleDsKIAogICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVBy
b3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApp
bmRleCA4MjQxZDZlMGMwNzU2NDQ3MWM1YTlkYTUyZTE2ZDFiYTczYmVmOTk1Li40ODFmMTZiM2U5
ZWVhZmJjNTNlN2Q1MTg0ZWM0NTQ0NzFhZDJiMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2
b2lkIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwogfQogCi12b2lkIENsb25lZEFyZ3VtZW50czo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3Vt
ZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTc4LDExICsxNzgsMTAgQEAgdm9pZCBDbG9uZWRBcmd1
bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlk
ZW50LCBKU1YKICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpIHsKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNz
YXJ5KGV4ZWMpOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBzbG90OyAvLyBTaGFk
b3cgdGhlIGdpdmVuIFB1dFByb3BlcnR5U2xvdCB0byBwcmV2ZW50IGNhY2hpbmcuCi0gICAgICAg
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1bW15KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlk
ZW50LCB2YWx1ZSwgZHVtbXkpOwogICAgIH0KICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVkQXJndW1l
bnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIGlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAppbmRleCA4ZTcxM2Q1YzZmYTVjYTE4NDEzNGIwNTJiMmQ1ODk5YTI2NzdhMzBl
Li41ZDIyMjE4M2M5ZTcwODMyOTRiMTQxNzZkYTRlZjU2MTk3Y2JiM2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNjIsNyArNjIs
NyBAQCBjbGFzcyBDbG9uZWRBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAppbmRleCA2N2YxYjAzNDVk
NzFiOGQzMzYyZjY2YmI2NWUyZGNmM2EzNWQyYWE0Li5lZGNjNmYxYjk4ZDZkYWRmODg5N2U4YWYy
ZmYwMjI0NDUyOWIzZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY0FyZ3VtZW50cy5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIEdlbmVyaWNBcmd1bWVu
dHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaAppbmRleCA5YjE4MDAxODU3ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2ZGVlLi5kMmVi
MzcxMTUyMTI2NDVjMzE2Zjc5ZDQyZTIzYjc4MGZkZGJlZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAg
LTk3LDcgKzk3LDcgQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXZvaWQgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTA4LDI4ICsxMDgsMjcgQEAKICAgICAgICAgICAg
IHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyh2bSk7CiAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBkdW1teSA9IHNsb3Q7IC8vIFRoaXMgcHV0IGlzIG5vdCBjYWNoZWFibGUsIHNvIHdlIHNoYWRv
dyB0aGUgc2xvdCB0aGF0IHdhcyBnaXZlbiB0byB1cy4KLSAgICAgICAgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1t
eSk7CiAgICAgfQogICAgIAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1
aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlj
a2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
LXZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCitib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNl
bGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2Fu
QWNjZXNzSW5kZXhRdWlja2x5KGluZGV4KSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAppbmRleCBhZmRiZTBkZTc2ZWQ3OWEyYzczNDNkYTdmNzFiMDZh
N2ViZWQxYTRmLi43NmM2YzQ3MGE5Y2JiNjExNzdkYjYxNmZlZjY5MWVkMGQ4NTEwYjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEKLXZvaWQg
SlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwogCkBAIC0x
OTgsMTMgKzE5OCwxMyBAQCB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQogICAgICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRv
TnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewogICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHRo
aXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC02
NDQsNyArNjQ0LDggQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdl
OiB7CiAgICAgICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IGxlbmd0aCgpOwotICAgICAgICBpZiAo
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBvbGRMZW5ndGgsIHZhbHVl
LCB0cnVlKSkgeworICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICBpZiAo
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBvbGRMZW5ndGgsIHZhbHVl
LCB0cnVlLCBwdXRSZXN1bHQpKSB7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlv
bigpICYmIG9sZExlbmd0aCA8IDB4RkZGRkZGRkZ1KQogICAgICAgICAgICAgICAgIHNldExlbmd0
aChleGVjLCBvbGRMZW5ndGggKyAxLCB0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA0NWI1NThiMjAwOTgxMThmOWUz
ZTE2MjA4OTQ3ZmNlNjc2Yjk5ZWI1Li4zYTk0ZTM0NWIzNjA2ZmQyNDcxM2Y5ZjFmMzllNDg2YzBj
YTY2YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xNTYs
NyArMTU2LDcgQEAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCmluZGV4IDM1OWFlNDdh
NTBiZTdlYzI4MDI4NzBjOTY3NzQ4NDY0MzBlMzQ0YjEuLjI5MjFhNDFhN2M3ZWEwMjkzNmQwZThj
NDE1NmFkNWQ2YzU5NTEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgSlNBcnJheUJ1ZmZlcjo6
Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0FycmF5
QnVmZmVyOjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAgICBKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkBAIC04NywxMCArODcsMTAgQEAgdm9p
ZCBKU0FycmF5QnVmZmVyOjpwdXQoCiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkgewogICAgICAgICByZWplY3QoZXhlYywgc2xv
dC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJy
YXkgYnVmZmVyIHByb3BlcnR5LiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNBcnJheUJ1ZmZl
cjo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyLmgKaW5kZXggZDYzNGQ3MzYzZmU0YTUwOGI4YWI5ODBjZmIwNjVmMzExYTdh
YTZlOC4uZjc2NzUzODM3ODQ0ZjBhNmZiNWFjN2M0OWNhMjlhMzQ1MzQzNzkxNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAtNTIsNyArNTIs
NyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
IAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggM2JmY2FmMTUyMTk5MjViOTNlZDc4N2Y0MTUwMWM5Yjc3YmI1NWIx
MS4uODRhNzQ1NDhiOWVmMjdiNGUyZjNiZGJlNGY4Y2RjMGM5NjMzYmU2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAt
MTY0LDE3ICsxNjQsMTcgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAKLXZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnB1
dCgKK2Jvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAg
ICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKTsKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWZmZXIpIHsKICAgICAgICAgcmVqZWN0
KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQt
b25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJy
YXlCdWZmZXJWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDUyM2EyMDBmYmEyZDc3MmMy
YjczZjJkNGM1ZmM2NWM3MTJmNmI5YmYuLmIyY2Y1YTJiMTk5OWU1ZDdlYTJlOGE0ODc1ZWJlNDcz
OGUwODhiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCmluZGV4IGI5ZGQwYTQxN2Q4MDNiMGU0NWRhZWNlMjg4NDQ1ZWUxMmRmNTc4MzYuLmE4
OWQ0NTMwOGI1NDg3OThjODI5MDZhMWFhODU4YzkxOWM5NTM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0xMjksMTQgKzEyOSwxMiBAQCBK
U09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB9CiAKIC8vIEVDTUEgOC43LjIKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKLSAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7
Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUg
YW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgSlNPYmpl
Y3QqIG9iaiA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CkBAIC0xNDcsNyArMTQ1LDcgQEAg
dm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxs
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTU5LDE4
ICsxNTcsMTggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0
RGlyZWN0KG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewog
ICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7CiAgICAgICAg
ICAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRlcyAmIEN1c3RvbUFj
Y2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVj
dCBvciBvbmUgb2YgaXRzIApAQCAtMTg1LDIyICsxODMsMjIgQEAgdm9pZCBKU1ZhbHVlOjpwdXRU
b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUKICAgICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAg
ICByZXR1cm47CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhf
QVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoKnRoaXMsIHNob3Vs
ZFRocm93KTsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJv
cGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KLSAgICAKLSAgICBpZiAoc3ludGhlc2l6
ZVByb3RvdHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclBy
b3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQot
ICAgICAgICByZXR1cm47CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3lu
dGhlc2l6ZVByb3RvdHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZUZvclByb3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3csIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgCiAgICAgaWYg
KHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBK
U1ZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNjkwM2JlMTMwNzkzZDU4YzFiZTU5YjZkY2E5
ZGRhMTU4MWNkNzdlMC4uZWNjNGU5NjE1YTE0YjZlOTMxMzUzZGI5YTU2ODQ1MTMzYmI2ZmEyNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjc5LDEx
ICsyNzksMTEgQEAgY2xhc3MgSlNWYWx1ZSB7CiAKICAgICBib29sIGdldFByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogCi0gICAgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICB2b2lkIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0VG9Qcmlt
aXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0KEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgYm9vbCBwdXRJbmxp
bmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEJ5SW5k
ZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgIEpTVmFsdWUgdG9UaGlzKEV4ZWNTdGF0ZSosIEVDTUFNb2RlKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKaW5kZXggNzZkYjM1NmMxOTg1ZDE1NzIwNTJkMmE0NWNlMjk5ZTNjYTUyNjk2Ny4uMTMx
MjBhZjg4NGZkYzNmM2Q1ZGQ0ZjFiZWVkYzYzNTRiNGYzNzY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC03ODUsNDAgKzc4
NSwzNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhl
YywgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHJldHVybiBnZXQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBzdGF0aWNfY2FzdDxkb3VibGU+KHByb3BlcnR5TmFtZSkpKTsK
IH0KIAotaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
aW5saW5lIGJvb2wgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAg
IGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkK
KyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotQUxX
QVlTX0lOTElORSB2b2lkIEpTVmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpwdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0
VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVy
biBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKwogICAg
IEpTQ2VsbCogY2VsbCA9IGFzQ2VsbCgpOwogICAgIGF1dG8gcHV0TWV0aG9kID0gY2VsbC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dDsKLSAgICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBK
U09iamVjdDo6cHV0KSkgewotICAgICAgICBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKQorICAgICAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIAogICAgIFB1dFByb3BlcnR5U2xvdCBvdGhlclNsb3QgPSBzbG90OwotICAgIHB1dE1ldGhv
ZChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhlclNsb3QpOworICAgIGJvb2wg
cmVzdWx0ID0gcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90aGVy
U2xvdCk7CiAgICAgc2xvdCA9IG90aGVyU2xvdDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1p
bmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoraW5saW5lIGJv
b2wgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBpZiAoVU5MSUtF
TFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleChhc0NlbGwo
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGlmIChVTkxJ
S0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKworICAgIHJldHVybiBhc0Nl
bGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogaW5saW5lIEpTVmFsdWUg
SlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggNTM2YzgxOWExZjc5ZDY2ODBjNDFiZWY5Y2IwNTYz
NDFiYjRhYzYyMi4uYWI4YjJjNjBhNDczOWM2YmM3NzRhYTY5NzJjNTQ4ZGU5ZjRmYzUyNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMDQsMjUgKzEwNCwy
MyBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsK
IH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2Jvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgewotICAg
ICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVl
LCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoY2VsbC0+aXNTdHJpbmco
KSB8fCBjZWxsLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywg
aWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNl
bGwtPmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hv
dWxkVGhyb3cpOwotICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVj
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBlMGRkMTY0NGE2NzNlODc3Njg2Y2JjOGVkMzVl
YWM4NTM2MWQ3NjI3Li5lNDE0MzFmZDE4ZDI5ODRiZDg2MzIxMmYyMjg3NzhmMjg1M2M1NjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTQ1LDggKzE0NSw4IEBA
IGNsYXNzIEpTQ2VsbCB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsK
ICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoKSBjb25zdDsKICAgICBjb25zdCBN
ZXRob2RUYWJsZSogbWV0aG9kVGFibGUoVk0mKSBjb25zdDsKLSAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA0NmJmMWNi
YmU5NjI0MTRiYmFmNzg0Y2RlZmIzMzliM2U0YTI4ZDVjLi40OWRiZGE5YjI4M2ExZDc2NDA2YjMz
MTE2YTY2ZDc5ZmU2NzY1MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0T3du
UHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3Ojpw
dXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkBAIC0xMTksMTAgKzExOSwxMCBAQCB2b2lkIEpTRGF0YVZp
ZXc6OnB1dCgKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5i
eXRlTGVuZ3RoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYnl0ZU9mZnNldCkgewogICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUo
KSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3BlcnR5
LiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCBkNjVmZTI3NWZh
YzM0ZTEwNTllOWY3MjU1YTE4YzU4MDZmZGE0OWZjLi43NzRiNmQxNThmN2M1ZmZmYzkwOTU5YTM0
NDBkZjdkMWUxYWRkNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNBcnJh
eUJ1ZmZlclZpZXcgewogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAppbmRleCA2NTEyZDRmOTlmMWU4MjczYWY3Yzc0MTc4OWY0MjRjNGEzZmQwMGRjLi41
NDFmMDRiMGRlOTE3MTMwZGIyZjdjMzliNzFjYzU3YWRiOWZkNTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNDIxLDEzICs0MjEsMTIgQEAg
dm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKLSAg
ICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CiAgICAgICAgIC8vIE1ha2Ug
c3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJl
IG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBF
Q01BLTI2MiA4LjEyLjkuCkBAIC00MzcsMjMgKzQzNiwyMSBAQCB2b2lkIEpTRnVuY3Rpb246OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSgogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIC8vIERvbid0IGFs
bG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX3JhcmVE
YXRhLgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNPYmplY3QpOwotICAg
ICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9u
dENhY2hlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgfQogICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKSkgewogICAgICAgICAvLyBUaGlzIHdp
bGwgdHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3QgYWxy
ZWFkeSB0aGUgY2FzZSEKICAgICAgICAgYm9vbCBva2F5ID0gdGhpc09iamVjdC0+aGFzUHJvcGVy
dHkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChva2F5LCBva2F5
KTsKLSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9w
ZXJ0eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmU5MjEwMTQxODM5YzgxODhmYjQxODMwZDkyNGE3ZWQy
OTZkOGE2Mi4uZTgwMWNhNWIxN2VhZDI0Y2M5MWE0NGNjY2E2YTJmNDE3ZWUwOWRjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw3
IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggODU4OTM5MmFmY2RhMWY1YjAxOTdkYzQ5
NTlhMjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhkMGFmODIzMjBiNTk4YTIyOTdmMWRjYjM4OTcz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIgKzI3NCwxMiBAQCBjbGFzcyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgZnJpZW5kIHN0
cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGI2YzZhZWQ4ODE0YTlhYjJkY2NkMjBlNjEx
ZTY3YzRmOWQ5Y2JhOTEuLjQ1MTcwMGZiYzhlMWQ1MzFlMjE5Y2IwOTQ5NzY1ODEyOTkyOGFjZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMDMsMTggKzMwMywxNiBAQAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dEJ5
SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJp
Y3RNb2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgpAQCAtMzY0LDE5ICszNjIsMTggQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgo
Citib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KAogICAg
IEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxs
KTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWUodGhpc09iamVjdCksIHNob3VsZFRocm93
KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KAotICAgICAgICAgICAg
dGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2
YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgCiAgICAgdGhpc09i
amVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5j
cHAKaW5kZXggNmQxNzYwODZlYWQzOTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZiZDBmNi4uZWZmZWJm
YjQ1MTUxMTMxZmEwNTg1NDU0NTg1YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmNwcApAQCAtMzgsMTMgKzM4LDE1IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgcmV0
dXJuIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LXZvaWQgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogICAgIGJvb2wgYWx3YXlz
VGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5ID0gdHJ1ZTsKICAgICBib29sIGlnbm9y
ZUNvbnN0QXNzaWdubWVudEVycm9yID0gc2xvdC5pc0luaXRpYWxpemF0aW9uKCk7Ci0gICAgc3lt
Ym9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5LCBpZ25v
cmVDb25zdEFzc2lnbm1lbnRFcnJvcik7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAg
ICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHks
IGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9yLCBwdXRSZXN1bHQpOworICAgIHJldHVybiBwdXRS
ZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
NjQzZjA5NWRkMTk3OTllNWFhMzI2MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0ZmQyZTA0NjE1MDBl
ODJkY2NkNjgwYjFhYzE2Y2YxZDZmMDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3ltYm9sVGFibGUoKS0+
c2l6ZSgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3YTZiNDlmMTkyMTM3
ZjRlNy4uYTUwNDBjYmZjNGIzNDQ3ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjIw
LDE2ICs2MjAsMTcgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5UHJvZmlsZXIoKSBj
b25zdAogICAgIHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c0xlZ2Fj
eVByb2ZpbGluZyh0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIEFT
U0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVh
cCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNs
b3QuaXNTdHJpY3RNb2RlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IGZhbHNl
OwotICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJlc3Vs
dCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0
UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNo
b3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMy4uODNl
ZTM4MTNlOGFjOThhMzdhMjJjZWI5NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDEsNyArNDAxLDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4OWQ5ZGQ2OTQzOTc3
YzEyMjg1MjEwNDdkZDVkNzQyZTQuLjgyOTAxYTc5NDRkYmE2NGExMjAxZGYxNTQ5NTZkNGZhNDIz
NTQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTgwLDIxICs4MCwyMiBAQCBib29sIEpTTGV4aWNhbEVu
dmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0xleGljYWxFbnZpcm9ubWVu
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTGV4
aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xl
eGljYWxFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBi
b29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCkgfHwgdGhp
c09iamVjdC0+aXNMZXhpY2FsU2NvcGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3Jz
ID0gZmFsc2U7Ci0gICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29s
IHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRj
aHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAg
ICAgIHJldHVybiBwdXRSZXN1bHQ7CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8g
SlNPYmplY3QgYmVjYXVzZSBfX3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCiAgICAgLy8gcHJv
cGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhlciBpbXBsZW1lbnRh
dGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQgb2Jq
ZWN0LgogICAgIEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
KTsKLSAgICB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQ
cm9wZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9v
bCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBjNDBh
ZTg3Mzk1Y2MzMTIyZDY4MDMxZWMyZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3OWM2MTQ0MDI3ZjNk
NjFmODYyNmJmMzQwYjhiM2JkYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3Mg
SlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZjA4ZmUzZDAy
Yjk5YzgzM2I1NTE3M2ViNTQwODRjMWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1OTJiMzIxOGQ3MmU3
MzRhYzcxZTllY2RmMThhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOwogfQog
Ci12b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBB
bGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29s
dmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
CmluZGV4IGY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMuLjQzNGJiN2Mz
ZjhhMjFhZWI4ZDllZjU5YzIyYWZlMWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcg
QEAgY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVu
dCB7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCmluZGV4IDBmZTljMzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJhYTljMzMwOWRiODcu
LjQwZGRhNzMzM2ZmNzIwYWRmNjA5OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5jcHAKQEAgLTE1MSwxNyArMTUxLDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZl
cgogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCAzN2U2NDJlODc0YTQ2ZDEzZjQ2NWUxYTdkN2M3
ZGU0MWNmN2IyN2QxLi44Y2ZlY2ZkMGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4ZjQ3MjY2NzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH0KIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2UyZTAxYmJhN2JiOGE5
MTQ3Zjg0ZmYuLjdiN2IzMjNlOThhOTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4MWQyNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAg
LTc4Niw3ICs3ODYsOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0
aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5n
ZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc3ltYm9sVGFibGVQ
dXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVudHJ5
LmxvY2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Ig
Ki8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICAgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hX
YXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRFbnRyeS5sb2NhbE5h
bWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNl
LCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1
bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAgICAg
ICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewpAQCAtODE2LDggKzgxNywxMCBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMs
IE1vZHVsZVByb2dyYW1FeGVjdQogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2Rl
Y2xhcmVkVmFyaWFibGVzKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBvZmZz
ZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKLSAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQot
ICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJv
bm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgp
KSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAv
KiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNT
dGFjaygpKSB7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAg
ICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRl
ZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVS
ZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgpAQCAtODM3LDcgKzg0MCw4IEBAIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
TW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJs
ZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAg
ICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQ
dXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5
RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3Vs
dCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAKaW5kZXggYWY0NzM3ZTliMDJmNTcxMDMwNjVlZTdkOGU3YmEw
NDBkZWMwZDJhYy4uY2I1MTVkODQ0MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5YzcyNDY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKQEAg
LTU4LDE0ICs1OCwxNiBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05vdEFu
T2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2Jq
ZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFs
dWUsIGJvb2wpCitib29sIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgSlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05vdEFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmgKaW5kZXggMGMyNmVjOThiNmZiMTdhODFjZWM5NTlmNzFkNWFjYzQ0OGE0NTdlMi4u
OWM0Nzk0M2UyMTFhZGVjYWNjYWY5YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaApAQCAtNjksOCArNjksOCBAQCBj
bGFzcyBKU05vdEFuT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCBmY2IzNTBhNDlkNTBhNjk0YWI0NmUxYWQ0NTY4NWYxNjA3
MjhkODFmLi4yYzRlZWM3ZDYxMjI5ZGQwYmVhYzk0NzhkYmM3M2M1NmMzYTdhN2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zNzksMTIgKzM3OSwx
MiBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotdm9pZCBK
U09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSh2
bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0
eU5hbWUpIHx8IG9iaiA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1Zh
bHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lk
IEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgdGhp
cywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmlj
dE1vZGUpOwogICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVy
KCkpIHsKICAgICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRyaWJ1
dGVzICYgQ3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwpAQCAt
NDEzLDcgKzQxMyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tQWNjZXNzb3Iob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVy
Kj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKG9iaiwganNDYXN0PEN1c3RvbUdldHRl
clNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCkBAIC00MjMsMTYgKzQyMywx
MyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICB9CiAgICAgICAgIGlmICghb2Jq
LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpIHsKICAgICAgICAgICAgIGlmIChvYmotPmNsYXNz
SW5mbygpLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcygpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGVudHJ5ID0gb2JqLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJv
cGVydHlOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBwdXRFbnRyeShleGVjLCBlbnRyeSwg
b2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcHV0RW50cnkoZXhlYywgZW50cnksIG9iaiwgdGhpcywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG9iai0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSAmJiBwcm9wZXJ0eU5hbWUgIT0g
dm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSB7CiAgICAgICAgICAgICBQcm94eU9i
amVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihvYmopOwotICAgICAgICAgICAgcHJv
eHktPlByb3h5T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5Qcm94
eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgfQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCkBAIC00NDEsMTggKzQzOCwyMSBAQCB2b2lk
IEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIH0KICAgICAKICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2
bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0
eU5hbWUpIHx8IG9iaiA9PSB0aGlzKTsKLSAgICBpZiAoIXB1dERpcmVjdEludGVybmFsPFB1dE1v
ZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0
TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgaWYgKCFwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkpIHsKKyAg
ICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
K2Jvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwog
ICAgIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsK
ICAgICB9CiAgICAgCiAgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewpA
QCAtNDYyLDE1ICs0NjIsMTMgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgIGNhc2UgQUxM
X1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewogICAgICAgICB0aGlzT2JqZWN0LT5jb252ZXJ0
VW5kZWNpZGVkRm9yVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOwogICAgICAgICAvLyBSZWxvb3Au
Ci0gICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmICgh
dmFsdWUuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5jb252ZXJ0SW50MzJG
b3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VH
SDsKICAgICB9CkBAIC00ODIsMjIgKzQ4MCwyMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAg
ICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW3Byb3BlcnR5TmFtZV0uc2V0KGV4ZWMtPnZt
KCksIHRoaXNPYmplY3QsIHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+PSBidXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNM
ZW5ndGgocHJvcGVydHlOYW1lICsgMSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6IHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5jb252ZXJ0RG91YmxlVG9Db250aWd1b3VzKGV4ZWMtPnZtKCkpOwogICAgICAgICAg
ICAgLy8gUmVsb29wLgotICAgICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAgZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2
YWx1ZS5hc051bWJlcigpOwogICAgICAgICBpZiAodmFsdWVBc0RvdWJsZSAhPSB2YWx1ZUFzRG91
YmxlKSB7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5jb252ZXJ0RG91YmxlVG9Db250aWd1b3Vz
KGV4ZWMtPnZtKCkpOwogICAgICAgICAgICAgLy8gUmVsb29wLgotICAgICAgICAgICAgcHV0QnlJ
bmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQpAQCAtNTA1LDcg
KzUwMSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKClbcHJvcGVydHlOYW1lXSA9IHZhbHVlQXNEb3VibGU7CiAgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFtZSArIDEpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBO
b25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CkBAIC01MjcsNyArNTIzLDcgQEAgdm9pZCBKU09iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLAogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwog
ICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CkBAIC01NDIs
MjYgKzUzOCwyOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIAogICAgICAgICAv
LyBVcGRhdGUgbGVuZ3RoICYgbV9udW1WYWx1ZXNJblZlY3RvciBhcyBuZWNlc3NhcnkuCiAgICAg
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAodGhpc09i
amVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBw
dXRSZXN1bHQ7CiAgICAgICAgICAgICBsZW5ndGggPSBwcm9wZXJ0eU5hbWUgKyAxOwogICAgICAg
ICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCk7CiAgICAgICAgICAgICArK3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlU2xvdCkgewot
ICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhP
bkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgKytzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2YWx1ZVNs
b3Quc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHRoaXNP
YmplY3QtPnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
IH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2Rl
V2hlbkFycmF5U3RvcmFnZUFscmVhZHlFeGlzdHMoVk0mIHZtLCBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UpCkBAIC0xMjQzLDcgKzEyNDEsNyBAQCBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9t
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NGcm9tKGdsb2JhbE9iamVjdCwgZXhlYyk7CiB9CiAK
LXZvaWQgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBK
U09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0dGVy
KTsKQEAgLTEyNTQsMTAgKzEyNTIsMTAgQEAgdm9pZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBnZXQKICAgICBp
ZiAoIShhdHRyaWJ1dGVzICYgRG9udEVudW0pKQogICAgICAgICBkZXNjcmlwdG9yLnNldEVudW1l
cmFibGUodHJ1ZSk7CiAKLSAgICBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICByZXR1cm4gZGVmaW5lT3duUHJvcGVydHko
dGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKLXZvaWQg
SlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVj
dDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHJvcGVydHlEZXNj
cmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoc2V0dGVyKTsKQEAg
LTEyNjgsMjcgKzEyNjYsMjUgQEAgdm9pZCBKU09iamVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBzZXQKICAgICBpZiAoIShh
dHRyaWJ1dGVzICYgRG9udEVudW0pKQogICAgICAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUo
dHJ1ZSk7CiAKLSAgICBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICByZXR1cm4gZGVmaW5lT3duUHJvcGVydHkodGhpcywg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKLXZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NF
UlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAK
LSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVl
LCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0
KTsKIAotICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJuIHB1dERpcmVjdE5vbkluZGV4QWNj
ZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAK
LXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7CiAKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJv
cGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICBi
b29sIHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogCiAgICAgQVNTRVJU
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpOwogCkBAIC0xMjk2
LDE4ICsxMjkyLDIwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1CiAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBSZWFkT25seSkKICAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJv
cGVydGllcygpOwogICAgIHN0cnVjdHVyZS0+c2V0SGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVy
dGllc1dpdGhQcm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRl
cnNjb3JlUHJvdG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpcyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blBy
b3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAg
Ym9vbCByZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKIAogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9w
ZXJ0aWVzKCk7CiAKICAgICBzdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXNX
aXRoUHJvdG9DaGVjayhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBIYXNQcm9wZXJ0eShPLCBQKSBm
cm9tIFNlY3Rpb24gNy4zLjEwIG9mIHRoZSBzcGVjLgpAQCAtMTgyNyw3ICsxODI1LDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlT
bG90JiBzbG90LCBKU1ZhbHVlIGcKICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhp
cywgYXR0cmlidXRlcywganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciksIG9mZnNl
dCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCitib29s
IEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFy
cmF5RW50cnkqIGVudHJ5SW5NYXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBtYXAgPSBtX2J1dHRlcmZseS5nZXQodGhpcyktPmFycmF5U3Rv
cmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKTsKQEAgLTE4MzgsNyArMTgzNiw3IEBAIHZvaWQgSlNP
YmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlF
bnRyeSogZW50cnlJbk1hCiAgICAgICAgIGVsc2UgaWYgKG9sZERlc2NyaXB0b3IuaXNBY2Nlc3Nv
ckRlc2NyaXB0b3IoKSkKICAgICAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwgbWFwLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpICYgfkFjY2Vzc29yOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpIHsKQEAgLTE4NjEsMTEgKzE4NTksMTIg
QEAgdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBT
cGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWEKIAogICAgICAgICBlbnRyeUluTWFwLT5zZXQodm0s
IG1hcCwgYWNjZXNzb3IpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVzID0gZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikgJiB+UmVhZE9u
bHk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
QVNTRVJUKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKTsKICAgICBlbnRyeUluTWFw
LT5hdHRyaWJ1dGVzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xk
RGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIERlZmluZWQgaW4gRVM1LjEg
OC4xMi45CkBAIC0yMDA0LDcgKzIwMDMsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWFsbG9jYXRlU3Bh
cnNlSW5kZXhNYXAoKQogICAgICAgICBhcnJheVN0b3JhZ2UtPm1fc3BhcnNlTWFwLmNsZWFyKCk7
CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVG
b3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNPYmplY3Q6OmF0dGVt
cHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGZvciAoSlNPYmplY3QqIGN1cnJlbnQg
PSB0aGlzOyA7KSB7CiAgICAgICAgIC8vIFRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIHdpdGgg
cmVzcGVjdCB0byBwcm90b3R5cGVzIGFzIEpTT2JqZWN0OjpwdXQoKS4gSXQgb25seQpAQCAtMjAx
NiwxNCArMjAxNSwxNCBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUlu
ZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgICAgICBpZiAoc3Rv
cmFnZSAmJiBzdG9yYWdlLT5tX3NwYXJzZU1hcCkgewogICAgICAgICAgICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6aXRlcmF0b3IgaXRlciA9IHN0b3JhZ2UtPm1fc3BhcnNlTWFwLT5maW5kKGkpOwog
ICAgICAgICAgICAgaWYgKGl0ZXIgIT0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPm5vdEZvdW5kKCkg
JiYgKGl0ZXItPnZhbHVlLmF0dHJpYnV0ZXMgJiAoQWNjZXNzb3IgfCBSZWFkT25seSkpKSB7Ci0g
ICAgICAgICAgICAgICAgaXRlci0+dmFsdWUucHV0KGV4ZWMsIHRoaXNWYWx1ZSwgc3RvcmFnZS0+
bV9zcGFyc2VNYXAuZ2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgICAgICAgICAg
cHV0UmVzdWx0ID0gaXRlci0+dmFsdWUucHV0KGV4ZWMsIHRoaXNWYWx1ZSwgc3RvcmFnZS0+bV9z
cGFyc2VNYXAuZ2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVu
dC0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkgewogICAgICAgICAgICAgUHJveHlPYmplY3Qq
IHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY3VycmVudCk7Ci0gICAgICAgICAgICBwcm94
eS0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzVmFsdWUsIGksIHZhbHVlLCBzaG91bGRUaHJv
dyk7CisgICAgICAgICAgICBwdXRSZXN1bHQgPSBwcm94eS0+cHV0QnlJbmRleENvbW1vbihleGVj
LCB0aGlzVmFsdWUsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIwMzUsMTcgKzIwMzQsMTcgQEAgYm9vbCBK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEoKICAgICB9CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50
ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBKU1Zh
bHVlIHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlKCk7CiAgICAgaWYgKHByb3RvdHlwZVZhbHVl
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGFzT2Jq
ZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZv
clByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVy
biBhc09iamVjdChwcm90b3R5cGVWYWx1ZSktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhP
bkhvbGVGb3JQcm90b3R5cGUoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRS
ZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KLXZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCitib29sIEpTT2JqZWN0
OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVCgoaW5kZXhp
bmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNT
RVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwpAQCAtMjA1OSwxNiArMjA1OCwxNSBAQCB2
b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0
ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAg
ICAgaWYgKGkgPiBNQVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKLSAgICAgICAgfHwgKGkgPj0gTUlO
X1NQQVJTRV9BUlJBWV9JTkRFWAotICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0
b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihidXR0ZXJmbHkpKSkKKyAgICAgICAg
fHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3Rv
cihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQogICAgICAgICB8
fCBpbmRleElzU3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpKSB7CiAgICAgICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRF
WCk7CiAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZVNsb3codm0pOwogICAgICAgICBTcGFyc2VB
cnJheVZhbHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsKLSAgICAgICAg
bWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOworICAgICAgICBib29s
IHJlc3VsdCA9IG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIGZhbHNlKTsKICAg
ICAgICAgQVNTRVJUKGkgPj0gYXJyYXlTdG9yYWdlKCktPmxlbmd0aCgpKTsKICAgICAgICAgYXJy
YXlTdG9yYWdlKCktPnNldExlbmd0aChpICsgMSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBlbnN1cmVMZW5ndGgodm0sIGkgKyAxKTsKQEAg
LTIwNzksMzEgKzIwNzcsMzIgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW4KICAgICBjYXNlIElu
dDMyU2hhcGU6CiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0ludDMyKCkpOwogICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUp
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNh
c2UgRG91YmxlU2hhcGU6IHsKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzTnVtYmVyKCkpOwogICAg
ICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIEFT
U0VSVCh2YWx1ZUFzRG91YmxlID09IHZhbHVlQXNEb3VibGUpOwogICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IHZhbHVlQXNEb3VibGU7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ29udGlndW91
c1NoYXBlOgogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5zZXQodm0sIHRoaXMs
IHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAK
ICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogfQogCiAvLyBFeHBsaWNpdCBpbnN0YW50aWF0aW9ucyBuZWVkZWQgYnkgSlNBcnJheS5j
cHAuCi10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFs
dWUpOwotdGVtcGxhdGUgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNW
YWx1ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWdu
ZWQsIEpTVmFsdWUpOwordGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihFeGVjU3RhdGUqLCB1bnNp
Z25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihFeGVjU3RhdGUq
LCB1bnNpZ25lZCwgSlNWYWx1ZSk7CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQor
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKIApAQCAtMjEzMCwxMiArMjEyOSwxMSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVucwogICAg
ICAgICAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgICAgICAgICAgc3RvcmFnZS0+
bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICArK3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3I7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvLCBvciBj
YW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3BlcnR5IC0gYWxsb2NhdGUgYSBzcGFy
c2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KICAgICAgICAgbWFwID0gYWxsb2NhdGVTcGFyc2VJbmRl
eE1hcChleGVjLT52bSgpKTsKLSAgICAgICAgbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBtYXAt
PnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCiAg
ICAgLy8gVXBkYXRlIG1fbGVuZ3RoIGlmIG5lY2Vzc2FyeS4KQEAgLTIxNDUsNyArMjE0Myw3IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9u
bHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwog
ICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKQEAgLTIxNTQsMTAgKzIxNTIsOCBA
QCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3Rv
cmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVucwogICAgIC8vIFdlIGFyZSBjdXJyZW50bHkgdXNpbmcg
YSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8gYmUgZG9pbmcgc28uCiAgICAg
Ly8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1hcCBpZiBTcGFyc2VNb2RlIGlz
IHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3IgaWYgYWxsb2NhdGlvbiBmYWls
cy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNE
ZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFz
ZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKSB7Ci0gICAgICAgIG1hcC0+cHV0RW50
cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JWZWN0
b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhl
Yy0+dm0oKSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhp
cywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0
ZXIgaW5jcmVhc2VWZWN0b3JMZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgogICAg
IHN0b3JhZ2UgPSBhcnJheVN0b3JhZ2UoKTsKQEAgLTIxNzUsOSArMjE3MSwxMCBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVj
U3RhdGUqIGV4ZWMsIHVucwogICAgIGlmICghdmFsdWVTbG90KQogICAgICAgICArK3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgdmFsdWVTbG90LnNldCh2bSwgdGhpcywgdmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTIxODcsMjUgKzIx
ODQsMjIgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYg
KGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkgewotICAgICAgICAgICAgcHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCisgICAgICAgICAgICByZXR1cm4gcHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAg
ZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LAogICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5
U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSkpOwotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluZGV4SXNTdWZmaWNpZW50bHlC
ZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgMCkgfHwgaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lO
REVYKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxk
VGhyb3csIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4
aW5nKCkpIHsKICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGluZGV4aW5nIHR5cGUgdG8gdGhl
IFNsb3dQdXRBcnJheVN0b3JhZ2UgYW5kIHJldHJ5LgogICAgICAgICAgICAgY3JlYXRlQXJyYXlT
dG9yYWdlKHZtLCBpICsgMSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKDAsIDAsIGkgKyAxKSk7Ci0gICAg
ICAgICAgICBwdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGNyZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCh2bSwgaSwgdmFsdWUpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9V
TkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6IHsKQEAgLTIyMTMsMzggKzIyMDcsMzMgQEAgdm9pZCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBj
YXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oZXhlYywgaSwgdmFsdWUp
OwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQ
RVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0
dHJpYnV0ZXM8SW50MzJTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAgICBjYXNl
IEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgcHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihleGVjLCBpLCB2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0
dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBp
LCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9DT05USUdVT1VT
X0lOREVYSU5HX1RZUEVTOgorICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwog
ICAgICAgICAKICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAg
Y2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIC8vIE5vIG93biBw
cm9wZXJ0eSBwcmVzZW50IGluIHRoZSB2ZWN0b3IsIGJ1dCB0aGVyZSBtaWdodCBiZSBpbiB0aGUg
c3BhcnNlIG1hcCEKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gYXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwLmdldCgpOwotICAgICAgICBpZiAoIShtYXAgJiYgbWFwLT5jb250
YWlucyhpKSkgJiYgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBpLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIHB1
dFJlc3VsdCA9IGZhbHNlOworICAgICAgICBpZiAoIShtYXAgJiYgbWFwLT5jb250YWlucyhpKSkg
JiYgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBpLCB2YWx1ZSwgc2hv
dWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAKICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3Rv
cmFnZToKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgcHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93LCBhcnJheVN0b3JhZ2UoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4g
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgaSwgdmFs
dWUsIHNob3VsZFRocm93LCBhcnJheVN0b3JhZ2UoKSk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQorICAgIHJldHVy
biBmYWxzZTsKIH0KIAogYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlIG1vZGUsIEFy
cmF5U3RvcmFnZSogc3RvcmFnZSkKQEAgLTI0MTgsMTUgKzI0MDcsMTUgQEAgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpLCBKU1YKICAgICB9CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRp
dmVJbnRyaW5zaWNHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEdldHRlclNldHRlciogYWNj
ZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAw
LCBuYW1lLnN0cmluZygpLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKICAgICBhY2Nlc3Nv
ci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yKHZtLCBuYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7CisgICAgcmV0
dXJuIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1
dGVzKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
ZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICghbmFtZSkKQEAgLTI0MzQsNyAr
MjQyMyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgQVNTRVJUKG5hbWUpOwogCiAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25MZW5ndGgsIG5hbWUsIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwot
ICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cisg
ICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRl
cyk7CiB9CiAKIEpTRnVuY3Rpb24qIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUm
IHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC0yNzQ1LDEyICsyNzM0LDExIEBAIHN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dE1heUJlSW5kZXgoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlKQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwot
ICAgIGVsc2UKLSAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFs
dWUpOworICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUpOworICAgIHJldHVybiBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7CiB9CiAKIGNsYXNzIERlZmluZU93blByb3BlcnR5U2NvcGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMjI2MjhlMDkzNTFlMmU4MDFhYjZlYTg3
ZDg3MGQ2NGFjYWRjNjNiMy4uMzYxZjI2YzBkZjUyZWU1OTg2ZGY2MGI3YWMwYjQ3ZmU0YTE4MmZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xNTgsMTgg
KzE1OCwxOCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gbV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT52ZWN0b3JMZW5ndGgoKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIHZvaWQgcHV0SW5saW5lKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0SW5saW5l
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAg
ICAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5SW5kZXhJbmxpbmUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCisgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiAgICAgewogICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFt
ZSkpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseShleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAg
cmV0dXJuIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAgICAgICAgIAogICAgIC8v
IFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHV0RGlyZWN0KiBtZXRob2RzOgpAQCAtMTkxLDcgKzE5
MSw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgLy8g
QSBub24tdGhyb3dpbmcgdmVyc2lvbiBvZiBwdXREaXJlY3QgYW5kIHB1dERpcmVjdEluZGV4Lgot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0
RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwogICAg
ICAgICAKICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKCkgY29uc3QKICAgICB7CkBAIC00ODQs
MTUgKzQ4NCwxNSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vICAt
IGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAgICAvLyAgLSBhdHRyaWJ1dGVzIHdpbGwgYmUg
cmVzcGVjdGVkIChhZnRlciB0aGUgY2FsbCB0aGUgcHJvcGVydHkgd2lsbCBleGlzdCB3aXRoIHRo
ZSBnaXZlbiBhdHRyaWJ1dGVzKQogICAgIC8vICAtIHRoZSBwcm9wZXJ0eSBuYW1lIGlzIGFzc3Vt
ZWQgdG8gbm90IGJlIGFuIGluZGV4LgotICAgIHZvaWQgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgdm9pZCBwdXREaXJl
Y3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGJv
b2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzID0gMCk7CisgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
Vk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICB2b2lkIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQgcHV0RGlyZWN0QWNjZXNzb3IoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBib29sIHB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgIHZvaWQgcHV0R2V0dGVyKEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
dm9pZCBwdXRTZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKKyAgICBib29sIHB1dEdldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0U2V0dGVyKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtNjE4LDggKzYxOCw4
IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBwdXREaXJlY3Qo
Vk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25G
b3JPZmZzZXQob2Zmc2V0KS0+c2V0KHZtLCB0aGlzLCB2YWx1ZSk7IH0KICAgICB2b2lkIHB1dERp
cmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBJZGVu
dGlmaWVyLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9u
KiBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTY5MCw3ICs2
OTAsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIGlzIGVxdWl2
YWxlbnQgdG86CiAgICAgLy8KICAgICAvLyBmb28tPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGUoLi4uKTsKLSAgICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhv
bGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3csIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgICAgIAogICAgIC8vIFJldHVybnMgMCBpZiBp
bnQzMiBzdG9yYWdlIGNhbm5vdCBiZSBjcmVhdGVkIC0gZWl0aGVyIGJlY2F1c2UKICAgICAvLyBp
bmRleGluZyBzaG91bGQgYmUgc3BhcnNlLCB3ZSdyZSBoYXZpbmcgYSBiYWQgdGltZSwgb3IgYmVj
YXVzZQpAQCAtODM2LDggKzgzNiw4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAgICAgYm9vbCBkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAK
ICAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KLSAgICB2b2lkIHB1dEJ5
SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqKTsKKyAgICBib29s
IHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgIGJvb2wgcHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqKTsKIAog
ICAgIGJvb2wgaW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwog
ICAgIHZvaWQgZGVhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKCk7CkBAIC04NDYsNyArODQ2LDcgQEAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgCiAgICAgdm9pZCBub3Rp
ZnlQcmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29ycyhWTSYpOwogICAgICAgICAKLSAgICBib29sIGF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gQ2Fs
bCB0aGlzIGlmIHlvdSB3YW50IHNldEluZGV4UXVpY2tseSB0byBzdWNjZWVkIGFuZCB5b3UncmUg
c3VyZSB0aGF0CiAgICAgLy8gdGhlIGFycmF5IGlzIGNvbnRpZ3VvdXMuCkBAIC04OTEsNyArODkx
LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIHB1dERpcmVj
dEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBib29sIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lKEV4ZWNTdGF0
ZSogZXhlYywgVk0mLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVW
RVJfSU5MSU5FIHZvaWQgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSBib29sIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIGdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKQEAgLTkwMCw5ICs5MDAsOSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBK
U0NlbGwgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGZp
bmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICAKLSAgICB2
b2lkIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50cnkqLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7CisgICAg
Ym9vbCBwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqLCBTcGFyc2VBcnJheUVudHJ5Kiwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGQpOwogICAg
ICAgICAKLSAgICB2b2lkIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBi
b29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dERpcmVj
dEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVj
dEluZGV4TW9kZSwgQXJyYXlTdG9yYWdlKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9k
ZSk7CiAgICAgICAgIApAQCAtMTQyMywxOSArMTQyMywxOSBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYQogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0
cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNl
dHRlcigpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywg
c2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5p
c0N1c3RvbUdldHRlclNldHRlcigpKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVm
aW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICBy
ZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGRiMTcwZjI5OGNiMjU1
OWM3ZTM3YTEyZWUxMTAyYzAwOTBjNTA4YTAuLjlkNTMzNDFhMTQ4MmMyZTk2NmMzMjQwYzFiMzAy
ZGVlMjgwZTYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCkBAIC01Myw3ICs1Myw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFByCiB9
CiAKIC8vIEVDTUEgOC42LjIuMgotQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxp
bmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwpAQCAtNjIsMTggKzYyLDE5IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hCiAgICAgCiAgICAgLy8gVHJ5IGluZGV4ZWQgcHV0IGZpcnN0LiBUaGlzIGlz
IHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgc2luY2UgbG9hZHMgb24gcHJvcGVydHkgbmFtZXMg
dGhhdCBhcHBlYXIgbGlrZQogICAgIC8vIHZhbGlkIGluZGljZXMgd2lsbCBuZXZlciBsb29rIGlu
IHRoZSBuYW1lZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKGV4
ZWMsIHZtLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KQotICAgICAg
ICAgICAgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpc09iamVjdC0+cHV0SW5saW5lU2xvdyhleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xv
dCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1
dElubGluZVNsb3coZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApp
bmRleCA5MzdjMDg4NzQ1ZjhiYjdjZmZiZGY3YWUxOTNjNTJiZTVjZjdiN2NmLi42MDgzNTI5MzUw
OWVlMGRlMDcxNjhhYmU3ZjdhMmVhYzY0MWVhOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcApAQCAtNzgsMTYgKzc4LDE2IEBAIGJvb2wgSlNQcm94eTo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNQcm94eTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCkt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNQcm94eTo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1Byb3h5OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNQcm94eSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0
KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRl
eCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogfQogCiBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IDJiZGNkMWI3MmFiY2ViYTg3ZmZi
MDZlNzRmZTE2YjYzMjczZDgxMjQuLjU3MDkyMWJlMThjODE2N2Y5YzdmZDU2NjZhZmI4MGI5YmJh
ZWZlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTc2LDgg
Kzc2LDggQEAgY2xhc3MgSlNQcm94eSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMzY4Y2VkY2I4MGIzYTc0YmI1YWMyMzZmNzZhYmFi
ODFlMjk1OTBiZi4uZDQ0Y2RlMDM2NGM5N2Q4ZGY1ZGJjZDkyYzM4OGRkMWE0ZjU3YzhlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIGVudW0gY2xhc3MgU3ltYm9sVGFibGVQdXRNb2RlIHsK
IHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVB1dE1vZGUsIHR5cGVuYW1l
IFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAg
IFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsCi0g
ICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJv
cnMsIFdhdGNocG9pbnRTZXQqJiBzZXQpCisgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIFdhdGNocG9pbnRTZXQqJiBzZXQsIGJvb2wm
IHB1dFJlc3VsdCkKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAKQEAgLTE3MCw2ICsxNzAsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICAgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRP
bmx5KCkgJiYgIWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yKQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICBwdXRS
ZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTE4OCwxNyArMTg5LDE4IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIC8vIHRo
ZSByaWdodCBmb3IgYmFycmllcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIEdDLiBBbmQgSSBkb24n
dCB3YW50IHRvIGhvbGQgVk0KICAgICAvLyBsb2NrcyB3aGlsZSBHQydpbmcuCiAgICAgcmVnLT5z
ZXQodm0sIG9iamVjdCwgdmFsdWUpOworICAgIHB1dFJlc3VsdCA9IHRydWU7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRh
YmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCi0gICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMpCisgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRP
bmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3VsdCkKIHsK
ICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRN
b2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJy
b3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQ
dXRNb2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5
RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAgICAgICAgVmFyaWFibGVX
cml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0yMDcsMTEgKzIwOSwxMSBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZVB1dFRvdWNoV2F0Y2hwb2ludFNldCgKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2Jq
ZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRT
ZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3Vs
ZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29s
IHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9v
bCYgcHV0UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAg
dW5zaWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1
dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwg
aWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJs
ZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJv
ciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQog
ICAgICAgICBzZXQtPmludmFsaWRhdGUoVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKTsgLy8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQgdGhp
cyBzdGF0aWNhbGx5LCB3ZSB3b3VsZCBoYXZlIGludmFsaWRhdGVkIGl0LgogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yMjAsMTIgKzIyMiwxMiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dElu
dmFsaWRhdGVXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmpl
Y3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0
Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAotICAgIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7
CiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBmYWxzZTsKICAgICBib29sIGln
bm9yZVJlYWRPbmx5RXJyb3JzID0gdHJ1ZTsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxl
UHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxl
UHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQpCiAgICAg
ICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaChzZXQsIG9iamVjdCwgcHJvcGVydHlO
YW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAppbmRleCAxZTcwMjE1MTliOGU3ZWMxZDIyZDgzMzhjYzM4YzI4ODFkM2VmZjczLi45NDY4
NTk1NWRjMjcxNmQzNjUwOTZhYmUyMDVkZGFhNDhmYWFhOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjg0LDI0ICsyODQsMzQgQEAgaW5saW5lIGJvb2wgZ2V0
U3RhdGljVmFsdWVTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwg
VGhpc0ltcCoKIC8vICdiYXNlJyBtZWFucyB0aGUgb2JqZWN0IGhvbGRpbmcgdGhlIHByb3BlcnR5
IChwb3NzaWJseSBpbiB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHRoZSBvYmplY3QgcHV0IHdhcyBj
YWxsZWQgb24pLgogLy8gJ3RoaXNWYWx1ZScgaXMgdGhlIG9iamVjdCB0aGF0IHB1dCBpcyBiZWlu
ZyBhcHBsaWVkIHRvIChpbiB0aGUgY2FzZSBvZiBhIHByb3h5LCB0aGUgcHJveHkgdGFyZ2V0KS4K
IC8vICdzbG90LnRoaXNWYWx1ZSgpJyBpcyB0aGUgb2JqZWN0IHRoZSBwdXQgd2FzIG9yaWdpbmFs
bHkgcGVyZm9ybWVkIG9uIChpbiB0aGUgY2FzZSBvZiBhIHByb3h5LCB0aGUgcHJveHkgaXRzZWxm
KS4KLWlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxl
VmFsdWUqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVW
YWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlkZSBw
cm9wZXJ0eS4KICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSB7CiAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih0aGlzVmFsdWUpKQogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHsKICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0gZWxzZSBpZiAoIShlbnRy
eS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CiAgICAg
ICAgIEpTVmFsdWUgdXBkYXRlVGhpc1ZhbHVlID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIEN1c3Rv
bUFjY2Vzc29yID8gc2xvdC50aGlzVmFsdWUoKSA6IEpTVmFsdWUoYmFzZSk7CiAgICAgICAgIGVu
dHJ5LT5wcm9wZXJ0eVB1dHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh1cGRhdGVUaGlzVmFs
dWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBDdXN0b21BY2Nlc3NvcikKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tQWNjZXNz
b3IoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsK
LSAgICB9IGVsc2UgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAg
IHJldHVybiBmYWxzZTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZTU5ZDNhYjA2MDllMTQ0YjExNzE5ZDM5MTEwMWYxMTNi
MGJkMWI2Zi4uMGUyYzAyYWE1YTc2ODgxNTc3ZmNmNmQ0YmE3ZTc3YmQzN2ZjOTAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtMzQ1LDEy
ICszNDUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci12b2lkIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVy
Zm9ybURlZmF1bHRQdXQpCitib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJz
ZSgpKSB7CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAodm0ucHJvcGVy
dHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlO
YW1lLnVpZCgpKSkpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9y
bVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVj
dC4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsK
QEAgLTM2NywxMiArMzY3LDEwIEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgQ2FsbFR5
cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2Qo
ZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIEFTQ0lJTGl0
ZXJhbCgiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlLiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJn
ZXQoKTsKLSAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcGVyZm9y
bURlZmF1bHRQdXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc2V0TWV0aG9k
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOwogCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQo
dGFyZ2V0KTsKQEAgLTM4MSw2MiArMzc5LDYxIEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1Q
dXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAg
ICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9
IGNhbGwoZXhlYywgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3Vt
ZW50cyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVz
dWx0LnRvQm9vbGVhbihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghdHJhcFJlc3VsdEFz
Qm9vbCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAgICBp
ZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJh
YmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFzYW1l
VmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBwdXRWYWx1ZSkpIHsKICAgICAgICAgICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidz
ICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9u
ICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVl
IGFscmVhZHkgb24gdGhlICd0YXJnZXQnLiIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5j
b25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0
eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UuIikpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pIHsKLSAgICAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKQorICAgICAgICByZXR1cm4gQmFzZTo6
cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHJveHlP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRv
IHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9
IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QtPnRhcmdldCgpKTsKLSAgICAgICAgdGFyZ2V0
LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJn
ZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH07Ci0gICAgdGhpc09i
amVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlO
YW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1Q
dXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3BlcnR5TmFtZSwgcGVyZm9ybURl
ZmF1bHRQdXQpOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5
SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKTsgCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHBlcmZv
cm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IHNob3VsZFRocm93OwogICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlzU3RyaWN0TW9kZSk7IC8vIFdl
IG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5SW5kZXguCi0gICAg
ICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBs
KCksIHB1dFZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUo
dm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKICAg
ICB9OwotICAgIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1w
bCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHBlcmZvcm1QdXQoZXhlYywgcHV0
VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAK
LXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlz
T2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCBiNjhjYWM0NGJlZDkwODk2OGI2ZGZi
MzRlMzkwMDExM2RhZDQxYzQyLi41NTU5NzhjZjVjODIyZTk1NWE1NzkyZmYyNDhhY2JjY2QyNmM1
NTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAg
LTYyLDkgKzYyLDkgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgSlNPYmplY3QqIHRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAg
ICAgSlNWYWx1ZSBoYW5kbGVyKCkgeyByZXR1cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhp
c1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0
YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBw
dXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHRE
ZWxldGVGdW5jdGlvbj4KICAgICBib29sIHBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVuY3Rpb24pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQ
ZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uPgotICAgIHZvaWQgcGVyZm9ybVB1dChFeGVjU3RhdGUq
LCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJm
b3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKKyAgICBib29sIHBlcmZvcm1QdXQoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVyZm9y
bURlZmF1bHRQdXRGdW5jdGlvbik7CiAgICAgYm9vbCBwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMo
RXhlY1N0YXRlKik7CiAgICAgYm9vbCBwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwog
ICAgIGJvb2wgcGVyZm9ybURlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDE5YmYx
YzU2ZDMwNzUyNTlhMjQxYThjNTU5NjRkOGUyMWUzYmUwY2YuLjQ1MDE2OTk1OGY1MWE5OTc1NjQy
NmNlNTNhZWY2MTM3ZjVlZGI2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC00Miw2ICs0Miw3IEBACiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktl
eXMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9m
KEV4ZWNTdGF0ZSopOwogCiB9CkBAIC02Nyw2ICs2OCw3IEBACiAgICAgaXNFeHRlbnNpYmxlICAg
ICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICByZWZsZWN0T2JqZWN0T3du
S2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwcmV2ZW50RXh0
ZW5zaW9ucyAgICAgICAgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgc2V0ICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RPYmpl
Y3RTZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIHNldFBy
b3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCkBAIC0xOTcsNiArMTk5LDI4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1
bHQpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVj
dC5zZXQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgSlNPYmplY3QqIHRh
cmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsKKyAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1lbnQoMyk7
CisKKyAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBp
biBzdHJpY3QgbW9kZS4KKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBpc1N0cmljdE1vZGUpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQo
MiksIHNsb3QpKSk7Cit9CisKIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApp
bmRleCA0ZmRhZWI0YTQ5YTljN2IxYjUxY2JmNTNkY2NkMDJlNGUwNWEyZDUwLi4zOGM5YjkzNTQ5
MWJiYjgwOTlmZjJhYzdhNzIyYjA1MDAzNTRjYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTE0NywxNiArMTQ3LDE2IEBAIHN0YXRp
YyB2b2lkIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHRoCiAgICAgYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFs
c2UpOwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7Ci0gICAgICAgIGFzUmVnRXhwT2JqZWN0KGNlbGwp
LT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAg
ICBib29sIHJlc3VsdCA9IGFzUmVnRXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVl
KGFzUmVnRXhwT2JqZWN0KGNlbGwpLCBzbG90LmlzU3RyaWN0TW9kZSgpCiAgICAgICAgICAgICA/
IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdAogICAgICAgICAgICAgOiByZWdFeHBPYmpl
Y3RTZXRMYXN0SW5kZXhOb25TdHJpY3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQotICAgIEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGE2MjZkMjkxMmVhOGVhOGYyNTQzZjUxNzgyNjBl
MmY4ZmQ1ZTdiNTcuLmI5NDFlZTkwZDUwNTRhNTI5MTJjNTdmZjUwMzAwYmRkNDY4ZTcwMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC00MSwy
MCArNDEsMjYgQEAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHZvaWQgc2V0UmVnRXhwKFZNJiB2bSwgUmVnRXhwKiByKSB7IG1fcmVnRXhwLnNldCh2
bSwgdGhpcywgcik7IH0KICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
RXhwLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBsYXN0SW5kZXgpCisgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBz
aXplX3QgbGFzdEluZGV4KQogICAgIHsKICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdy
aXRlQmFycmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKLSAgICAgICAgaWYgKExJS0VMWShtX2xh
c3RJbmRleElzV3JpdGFibGUpKQorICAgICAgICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0
YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
anNOdW1iZXIobGFzdEluZGV4KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAgYm9vbCBzZXRMYXN0SW5k
ZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRUaHJvdykK
ICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJc1dyaXRhYmxlKSkKKyAgICAg
ICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAgICBtX2xh
c3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsKLSAgICAgICAgZWxzZSBp
ZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgSlNWYWx1ZSBnZXRMYXN0SW5kZXgoKSBjb25zdAogICAgIHsKQEAg
LTY1LDcgKzcxLDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAKaW5kZXggOWE1ZGE4Mzk1N2MzMjRlOGRhZjQwMjVkZjQxNDk1MmQ4NGMwNTczOS4uNTE3YjY2
MTMxN2FmNWI4MTFhNzVlYzg1ZTJiZmVmOTM3ZWFlN2FkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgU3RydWN0dXJlKiBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIApAQCAtMTAyLDEwICsxMDIsMTAgQEAgdm9p
ZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBhcnJheSwgdW5zaWduZWQgaSwKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAg
ICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBlbnRyeS5wdXQoZXhlYywg
YXJyYXksIHRoaXMsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIGVudHJ5LnB1dChl
eGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXks
IHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVj
dEluZGV4TW9kZSBtb2RlKQpAQCAtMTQ2LDIwICsxNDYsMjEgQEAgdm9pZCBTcGFyc2VBcnJheUVu
dHJ5OjpnZXQoUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAogICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihCYXNlOjpnZXQoKSwgYXR0cmlidXRlcyk7CiB9CiAKLXZvaWQg
U3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0
aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKIHsKICAgICBpZiAoIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKSB7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRU
aHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgc2V0KGV4ZWMtPnZtKCksIG1h
cCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAogICAgIGNhbGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNo
b3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oCmluZGV4IDA3NTRiNTNkOWQ2MDFkZjJhY2Q3YmNhZjJlOTRhZWY2ZDMzN2RmYTIuLmY3
MWRjOTk0ZTg5NGE3MjgzYTU3MmIzMzI2YzllODc2MWI5MjJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVu
a25vd24+IHsKIAogICAgIHZvaWQgZ2V0KEpTT2JqZWN0KiwgUHJvcGVydHlTbG90JikgY29uc3Q7
CiAgICAgdm9pZCBnZXQoUHJvcGVydHlEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIEpTVmFsdWUgZ2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBTcGFyc2VBcnJheVZhbHVl
TWFwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9k
cyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbWFwCi0gICAgdm9pZCBwdXRFbnRyeShF
eGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBib29sIHB1dEVudHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERp
cmVjdEluZGV4TW9kZSk7CiAgICAgQWRkUmVzdWx0IGFkZChKU09iamVjdCosIHVuc2lnbmVkKTsK
ICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4
IDA5ODhkNmQwNjkwMjk4OTA0ZWQ1OTlhMWRlODhjN2YzZDA0NTRhM2QuLmMyODdlZjhlMGUyNmM2
NTZlYWFkYzJmZWU3MzgwNGJhMDY0YzgwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtNjAsMjUgKzYwLDI1IEBAIGJvb2wgU3RyaW5n
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3Qp
OwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQog
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+
aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlm
IChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVj
Y2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2ZkZjFkYTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5
Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaApAQCAtNDksOCArNDksOCBAQCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJs
aWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwKaW5kZXggY2E3OTEzMmQ1ODNmZDVkZDRmOTUzZDg5MWQ2ZjYxMTdmYmVmODAwOC4uZTM0ZmNh
ODFjYzhkYzI1NmNmM2JjODNlNjkzM2MzMzk2Zjk0YzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3Rf
UmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcudGFyZ2V0X21ldGFfcHJvcGVydHkuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5zZXQuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhw
LnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLm1hdGNoXS5qcwog
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0
aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnJlcGxhY2VdLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273016</attachid>
            <date>2016-03-04 10:34:27 -0800</date>
            <delta_ts>2016-03-04 11:53:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160305033412.patch</filename>
            <type>text/plain</type>
            <size>138355</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NThiZDdjYjY4M2NmNzZjZGI5ZDNiZWIyZDc1Mjc4NmJkYjc0ZDc2Li4zYzNlMjA2NjNhZDRiMmNh
YTU1ODAwZDIzNjc3OTViM2RiMTI1YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTYtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNl
dHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpwdXQpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRJbmxpbmUpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnB1dCk6
CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1
dCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRC
eUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFNldHRlcik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
ZGV4ZWREZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRy
aW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleCk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChK
U0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6c3lt
Ym9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAgKiBydW50
aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Q
dXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RT
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6c2V0TGFzdEluZGV4KToKKyAgICAgICAgKiBydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZh
bHVlTWFwOjpwdXRFbnRyeSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6
CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKwogMjAxNi0w
My0wNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIExleGljYWwgYmluZCAic3VwZXIiIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gaW4gZ2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBhZGRkMjE5ODYzMzllM2MxZDBiMWU0
MGNlMmJhZTdmN2NkYjdmNzZkLi5lOTU2M2Y1NGNlYThiMjYzYjE0MzM1NjcyMWQ0Y2RkZDc5YzVl
NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApA
QCAtMTgxLDggKzE4MSw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50
IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCA2ZTBhNmNlYjRiZWI3OTdlYWZkMTY3OTg4ZWM0ZDhhNzVkNDMxNTk4
Li5jMWE2ZDc0OTZmNTY3N2ZjYjRjM2Q5NTg3NzNlNWFkNWM1N2MzOWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtMjIyLDcgKzIyMiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMjQ0LDEzICsyNDQsMTMgQEAKICAgICAgICAgICAg
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3Rh
dGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5LT5zZXRQ
cm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CkBAIC0yNjEsNyArMjYx
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4
ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBl
eGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNzIsOSArMjcyLDggQEAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQg
YXMgb3ZlcnJpZGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0LDcgKzI4
Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1Jl
ZihleGVjKTsKQEAgLTMwNiwxMyArMzA1LDEzIEBACiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSog
c3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAg
ICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChwcm9wZXJ0
eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAm
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlm
IChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBlbnRyeS0+c2V0UHJv
cGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTMyMyw3ICszMjIsNyBAQAogICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzEs
NyArMzMwLDcgQEAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJs
ZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7CiAg
ICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlv
bnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggYzNlZmJk
NTZkZDcwZGVhY2EzNjMzOTI0YTkyMjlkMzYxMzkzMjAxNS4uMzY1MDI0ZTg4ZjI2YWUxNDZhOWU4
YmE0Y2MyZjRjYmQ1YTM1NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtOTgsMTUgKzk4LDE1IEBAIGJvb2wgRGVidWdnZXJT
Y29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBEZWJ1Z2dlclNjb3BlOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGVidWdnZXJT
Y29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
RGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAg
IEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKICAgICBz
bG90LnNldFRoaXNWYWx1ZShKU1ZhbHVlKHRoaXNPYmplY3QpKTsKLSAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBEZWJ1Z2dl
clNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZlZjYwYzg5OWY3ZjE0ODNlMzJjYzdhODM4MzNlMGFm
OTQwNDcyZGIuLmUzNGY0OTdkN2ZiMzMzYWFlZTc2MDkyNDM4NjRmMzVjMGE3OGE1MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNDgs
NyArNDgsNyBAQCBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzQ1YmJlYzEyOWI2Yjdi
ODA1M2ZkYTA1ZTVhYjA2YjhhZjg3ZWMwNy4uZGRlNDlmMDg5N2I4YzgzMjMzODVlZjY4ZjE5NzBk
Y2RhMGM3M2Q4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCBjbGFz
cyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xv
dCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyMmJjNDNkOWI5ODI3Y2I5
ZjFkMDI3NmY3MDlmN2VhNmMyMTAzNzI3Li5kMzc2YjYzMTlhOTU0MDljZWM2OWI4NTMxMWNmYmUw
NTkzODRlNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFz
c0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApA
QCAtNDksMTAgKzQ5LDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBDb25z
dHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIGdldENvbnN0cnVjdERh
dGE7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgdHlwZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEJ5SW5k
ZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRCeUlu
ZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRy
IHB1dEJ5SW5kZXg7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUZ1bmN0aW9u
UHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggODI0MWQ2ZTBj
MDc1NjQ0NzFjNWE5ZGE1MmUxNmQxYmE3M2JlZjk5NS4uNDgxZjE2YjNlOWVlYWZiYzUzZTdkNTE4
NGVjNDU0NDcxYWQyYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBDbG9uZWRBcmd1
bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm8KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IGFycmF5LCBtb2RlKTsKIH0KIAotdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKQEAgLTE3OCwxMSArMTc4LDEwIEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWCiAgICAg
ICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSB7CiAgICAg
ICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShleGVjKTsKICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gU2hhZG93IHRoZSBnaXZlbiBQ
dXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNoaW5nLgotICAgICAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1
bW15KTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5k
ZXggOGU3MTNkNWM2ZmE1Y2ExODQxMzRiMDUyYjJkNTg5OWEyNjc3YTMwZS4uNWQyMjIxODNjOWU3
MDgzMjk0YjE0MTc2ZGE0ZWY1NjE5N2NiYjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQ2xv
bmVkQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggNjdmMWIwMzQ1ZDcxYjhkMzM2MmY2NmJi
NjVlMmRjZjNhMzVkMmFhNC4uZWRjYzZmMWI5OGQ2ZGFkZjg4OTdlOGFmMmZmMDIyNDQ1MjliM2U1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHMuaApAQCAtNDcsOCArNDcsOCBAQCBjbGFzcyBHZW5lcmljQXJndW1lbnRzIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggOWIx
ODAwMTg1NzgxMDVjNTUxNjk3MjBhZTU4NzdjM2UzZTI0NmRlZS4uZDJlYjM3MTE1MjEyNjQ1YzMx
NmY3OWQ0MmUyM2I3ODBmZGRiZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC05Nyw3ICs5Nyw3IEBA
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlw
ZT46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEdlbmVyaWNBcmd1
bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
VHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKQEAgLTEwOCwyOCArMTA4LDI3IEBACiAgICAgICAgICAgICB8fCBpZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+
b3ZlcnJpZGVUaGluZ3Modm0pOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBzbG90
OyAvLyBUaGlzIHB1dCBpcyBub3QgY2FjaGVhYmxlLCBzbyB3ZSBzaGFkb3cgdGhlIHNsb3QgdGhh
dCB3YXMgZ2l2ZW4gdG8gdXMuCi0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudCwgdmFsdWUsIGR1bW15KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwogICAgIH0KICAg
ICAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKICAg
ICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGluZGV4LnZh
bHVlKCkpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVl
LCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2
YWx1ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVp
Y2tseShpbmRleCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBp
bmRleCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBpbmRleCwg
dmFsdWUsIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IDJjZDY2ZTVjZDQyZmQwMWRiNTJkZTBkNzZiY2Y0ZDIxOTFl
ZjdjYjkuLjg3MzA3OTRhMzQyOGY2ZDVlYThlOWEyYjhjYmEyMTRjMTdiYzg0NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtODUsMTQg
Kzg1LDE0IEBAIEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIpCiAgICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGJhc2UsIEFyZ0xpc3QoKSk7CiB9CiAKLXZvaWQgY2FsbFNldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpT
VmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQorYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1
ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXJP
YmogPSBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKTsKIAogICAgIGlmIChnZXR0
ZXJTZXR0ZXJPYmotPmlzU2V0dGVyTnVsbCgpKSB7CiAgICAgICAgIGlmIChlY21hTW9kZSA9PSBT
dHJpY3RNb2RlKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgSlNPYmplY3QqIHNldHRlciA9IGdldHRlclNldHRlck9i
ai0+c2V0dGVyKCk7CkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWwK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOwog
ICAgIGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2UsIGFyZ3MpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggY2QyMDQwMjhlZjljYWUyOWY4
MjE0ZmM2YmZhZjNhZWI1NTZmM2Y5MS4uMmIyMmIzZTBiMGMwMGM5MjdiZjVjYmQ5MDA0OWNmZTkx
OGU1MTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBpbmxpbmUgR2V0dGVyU2V0dGVyKiBhc0dldHRlclNldHRl
cihKU1ZhbHVlIHZhbHVlKQogfQogCiBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcik7Ci1KU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRl
ciwgSlNWYWx1ZSwgRUNNQU1vZGUpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYWxsU2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUs
IEVDTUFNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggYWZkYmUwZGU3NmVkNzlhMmM3MzQzZGE3ZjcxYjA2
YTdlYmVkMWE0Zi4uMjYzMzIzMzRjYzYyNGFkYmY4MzI0NWY1YjNmYmNhYjcyYjM1OTBiZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5MCw3ICsxOTAs
NyBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogfQogCiAvLyBFQ01BIDE1LjQuNS4xCi12b2lk
IEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKIApAQCAt
MTk4LDEzICsxOTgsMTIgQEAgdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAgICAgICAgdW5zaWdu
ZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50
b051bWJlcihleGVjKSAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICB0
aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0TGVuZ3Ro
KGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgfQogCi0gICAgSlNP
YmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTY0
NCw3ICs2NDMsOCBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6
IHsKICAgICAgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbGVuZ3RoKCk7Ci0gICAgICAgIGlmIChh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExlbmd0aCwgdmFsdWUs
IHRydWUpKSB7CisgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmIChh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExlbmd0aCwgdmFsdWUs
IHRydWUsIHB1dFJlc3VsdCkpIHsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9u
KCkgJiYgb2xkTGVuZ3RoIDwgMHhGRkZGRkZGRnUpCiAgICAgICAgICAgICAgICAgc2V0TGVuZ3Ro
KGV4ZWMsIG9sZExlbmd0aCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDQ1YjU1OGIyMDA5ODExOGY5ZTNl
MTYyMDg5NDdmY2U2NzZiOTllYjUuLjNhOTRlMzQ1YjM2MDZmZDI0NzEzZjlmMWYzOWU0ODZjMGNh
NjZhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE1Niw3
ICsxNTYsNyBAQCBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
IH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggMzU5YWU0N2E1
MGJlN2VjMjgwMjg3MGM5Njc3NDg0NjQzMGUzNDRiMS4uMjkyMWE0MWE3YzdlYTAyOTM2ZDBlOGM0
MTU2YWQ1ZDZjNTk1MTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBKU0FycmF5QnVmZmVyOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTQXJyYXlC
dWZmZXI6OnB1dCgKK2Jvb2wgSlNBcnJheUJ1ZmZlcjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lk
IEpTQXJyYXlCdWZmZXI6OnB1dCgKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKSB7CiAgICAgICAgIHJlamVjdChleGVjLCBzbG90
LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byBhIHJlYWQtb25seSBhcnJh
eSBidWZmZXIgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVy
OjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXIuaAppbmRleCBkNjM0ZDczNjNmZTRhNTA4YjhhYjk4MGNmYjA2NWYzMTFhN2Fh
NmU4Li5mNzY3NTM4Mzc4NDRmMGE2ZmI1YWM3YzQ5Y2EyOWEzNDUzNDM3OTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcAppbmRleCAzYmZjYWYxNTIxOTkyNWI5M2VkNzg3ZjQxNTAxYzliNzdiYjU1YjEx
Li44NGE3NDU0OGI5ZWYyN2I0ZTJmM2JkYmU0ZjhjZGMwYzk2MzNiZTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0x
NjQsMTcgKzE2NCwxNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0KIAotdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6cHV0
KAorYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAg
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcikgewogICAgICAgICByZWplY3Qo
ZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1v
bmx5IHR5cGVkIGFycmF5IHByb3BlcnR5LiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNBcnJh
eUJ1ZmZlclZpZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggNTIzYTIwMGZiYTJkNzcyYzJi
NzNmMmQ0YzVmYzY1YzcxMmY2YjliZi4uYjJjZjVhMmIxOTk5ZTVkN2VhMmU4YTQ4NzVlYmU0NzM4
ZTA4OGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKaW5kZXggYjlkZDBhNDE3ZDgwM2IwZTQ1ZGFlY2UyODg0NDVlZTEyZGY1NzgzNi4uZDNj
ODJmYTZiNjgyMTFjZjk2ZDJmYWRlOGJhMWQ3MTAzMzcxYmVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEyOSwxNCArMTI5LDEyIEBAIEpT
T2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIH0KIAogLy8gRUNNQSA4LjcuMgotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVl
LCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAg
ICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBh
bnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KICAgICBKU09iamVj
dCogb2JqID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKQEAgLTE0Nyw3ICsxNDUsNyBAQCB2
b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwo
KSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTksMTgg
KzE1NywxNiBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXRE
aXJlY3Qob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7Ci0g
ICAgICAgICAgICAgICAgY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNl
dHRlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMsICp0aGlzLCBn
cywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9k
ZSk7CiAKICAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7CiAgICAg
ICAgICAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRlcyAmIEN1c3Rv
bUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9i
amVjdCBvciBvbmUgb2YgaXRzIApAQCAtMTg1LDIyICsxODEsMjIgQEAgdm9pZCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUKICAgICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
LSAgICByZXR1cm47CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTVmFsdWU6OnB1dFRv
UHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBN
QVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoKnRoaXMsIHNo
b3VsZFRocm93KTsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywg
cHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KLSAgICAKLSAgICBpZiAoc3ludGhl
c2l6ZVByb3RvdHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZv
clByb3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
KQotICAgICAgICByZXR1cm47CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAo
c3ludGhlc2l6ZVByb3RvdHlwZShleGVjKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgCiAgICAg
aWYgKHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9p
ZCBKU1ZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNjkwM2JlMTMwNzkzZDU4YzFiZTU5YjZk
Y2E5ZGRhMTU4MWNkNzdlMC4uZWNjNGU5NjE1YTE0YjZlOTMxMzUzZGI5YTU2ODQ1MTMzYmI2ZmEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjc5
LDExICsyNzksMTEgQEAgY2xhc3MgSlNWYWx1ZSB7CiAKICAgICBib29sIGdldFByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogCi0gICAg
dm9pZCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICB2b2lkIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dFRvUHJpbWl0aXZlQnlJbmRleChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwotICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0KEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgYm9vbCBwdXRJ
bmxpbmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEJ5
SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKIAogICAgIEpTVmFsdWUgdG9UaGlzKEV4ZWNTdGF0ZSosIEVDTUFNb2RlKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKaW5kZXggNzZkYjM1NmMxOTg1ZDE1NzIwNTJkMmE0NWNlMjk5ZTNjYTUyNjk2Ny4u
MTMxMjBhZjg4NGZkYzNmM2Q1ZGQ0ZjFiZWVkYzYzNTRiNGYzNzY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC03ODUsNDAg
Kzc4NSwzNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSog
ZXhlYywgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHJldHVybiBnZXQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBzdGF0aWNfY2FzdDxkb3VibGU+KHByb3BlcnR5TmFtZSkp
KTsKIH0KIAotaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzQ2VsbCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgp
KSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAot
QUxXQVlTX0lOTElORSB2b2lkIEpTVmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpwdXRJbmxpbmUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAg
cHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJl
dHVybiBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKwog
ICAgIEpTQ2VsbCogY2VsbCA9IGFzQ2VsbCgpOwogICAgIGF1dG8gcHV0TWV0aG9kID0gY2VsbC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dDsKLSAgICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9
PSBKU09iamVjdDo6cHV0KSkgewotICAgICAgICBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKQorICAgICAgICByZXR1
cm4gSlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIAogICAgIFB1dFByb3BlcnR5U2xvdCBvdGhlclNsb3QgPSBzbG90OwotICAgIHB1dE1l
dGhvZChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhlclNsb3QpOworICAgIGJv
b2wgcmVzdWx0ID0gcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90
aGVyU2xvdCk7CiAgICAgc2xvdCA9IG90aGVyU2xvdDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoraW5saW5l
IGJvb2wgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBpZiAoVU5M
SUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleChhc0Nl
bGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGlmIChV
TkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKworICAgIHJldHVybiBh
c0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogaW5saW5lIEpTVmFs
dWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggNTM2YzgxOWExZjc5ZDY2ODBjNDFiZWY5Y2Iw
NTYzNDFiYjRhYzYyMi4uYWI4YjJjNjBhNDczOWM2YmM3NzRhYTY5NzJjNTQ4ZGU5ZjRmYzUyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMDQsMjUgKzEw
NCwyMyBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9u
ZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgewot
ICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoY2VsbC0+aXNTdHJp
bmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5w
dXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhl
YywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8
IGNlbGwtPmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwg
c2hvdWxkVGhyb3cpOwotICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMs
IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBlMGRkMTY0NGE2NzNlODc3Njg2Y2JjOGVk
MzVlYWM4NTM2MWQ3NjI3Li5lNDE0MzFmZDE4ZDI5ODRiZDg2MzIxMmYyMjg3NzhmMjg1M2M1NjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTQ1LDggKzE0NSw4
IEBAIGNsYXNzIEpTQ2VsbCB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dDsKICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoKSBjb25zdDsKICAgICBjb25z
dCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoVk0mKSBjb25zdDsKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA0NmJm
MWNiYmU5NjI0MTRiYmFmNzg0Y2RlZmIzMzliM2U0YTI4ZDVjLi40OWRiZGE5YjI4M2ExZDc2NDA2
YjMzMTE2YTY2ZDc5ZmU2NzY1MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0
T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3
OjpwdXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkBAIC0xMTksMTAgKzExOSwxMCBAQCB2b2lkIEpTRGF0
YVZpZXc6OnB1dCgKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ieXRlTGVuZ3RoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnl0ZU9mZnNldCkgewogICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1v
ZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3Bl
cnR5LiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCBkNjVmZTI3
NWZhYzM0ZTEwNTllOWY3MjU1YTE4YzU4MDZmZGE0OWZjLi43NzRiNmQxNThmN2M1ZmZmYzkwOTU5
YTM0NDBkZjdkMWUxYWRkNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNB
cnJheUJ1ZmZlclZpZXcgewogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA2NTEyZDRmOTlmMWU4MjczYWY3Yzc0MTc4OWY0MjRjNGEzZmQwMGRj
Li41NDFmMDRiMGRlOTE3MTMwZGIyZjdjMzliNzFjYzU3YWRiOWZkNTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNDIxLDEzICs0MjEsMTIg
QEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9p
ZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsK
LSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5
IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBp
biBFQ01BLTI2MiA4LjEyLjkuCkBAIC00MzcsMjMgKzQzNiwyMSBAQCB2b2lkIEpTRnVuY3Rpb246
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSgogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3Jl
IHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIC8vIERvbid0
IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX3Jh
cmVEYXRhLgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNPYmplY3QpOwot
ICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
ZG9udENhY2hlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgfQog
ICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKSkgewogICAgICAgICAvLyBUaGlz
IHdpbGwgdHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3Qg
YWxyZWFkeSB0aGUgY2FzZSEKICAgICAgICAgYm9vbCBva2F5ID0gdGhpc09iamVjdC0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChva2F5LCBv
a2F5KTsKLSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQ
cm9wZXJ0eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmU5MjEwMTQxODM5YzgxODhmYjQxODMwZDkyNGE3
ZWQyOTZkOGE2Mi4uZTgwMWNhNWIxN2VhZDI0Y2M5MWE0NGNjY2E2YTJmNDE3ZWUwOWRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTY5LDcgKzE2
OSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggODU4OTM5MmFmY2RhMWY1YjAxOTdk
YzQ5NTlhMjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhkMGFmODIzMjBiNTk4YTIyOTdmMWRjYjM4
OTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIgKzI3NCwxMiBAQCBjbGFzcyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgZnJpZW5k
IHN0cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGI2YzZhZWQ4ODE0YTlhYjJkY2NkMjBl
NjExZTY3YzRmOWQ5Y2JhOTEuLjQ1MTcwMGZiYzhlMWQ1MzFlMjE5Y2IwOTQ5NzY1ODEyOTkyOGFj
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMDMsMTggKzMwMywxNiBAQAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0QnlJ
bmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNT
dHJpY3RNb2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgpAQCAtMzY0LDE5ICszNjIsMTggQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5k
ZXgoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KAog
ICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihj
ZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWUodGhpc09iamVjdCksIHNob3VsZFRo
cm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KAotICAgICAgICAg
ICAgdGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgCiAgICAgdGhp
c09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5jcHAKaW5kZXggNmQxNzYwODZlYWQzOTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZiZDBmNi4uZWZm
ZWJmYjQ1MTUxMTMxZmEwNTg1NDU0NTg1YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmNwcApAQCAtMzgsMTMgKzM4LDE1IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAg
cmV0dXJuIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLXZvaWQgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogICAgIGJvb2wgYWx3
YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5ID0gdHJ1ZTsKICAgICBib29sIGln
bm9yZUNvbnN0QXNzaWdubWVudEVycm9yID0gc2xvdC5pc0luaXRpYWxpemF0aW9uKCk7Ci0gICAg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5LCBp
Z25vcmVDb25zdEFzc2lnbm1lbnRFcnJvcik7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsK
KyAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVy
dHksIGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9yLCBwdXRSZXN1bHQpOworICAgIHJldHVybiBw
dXRSZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKaW5k
ZXggNjQzZjA5NWRkMTk3OTllNWFhMzI2MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0ZmQyZTA0NjE1
MDBlODJkY2NkNjgwYjFhYzE2Y2YxZDZmMDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3ltYm9sVGFibGUo
KS0+c2l6ZSgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3YTZiNDlmMTky
MTM3ZjRlNy4uYTUwNDBjYmZjNGIzNDQ3ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NjIwLDE2ICs2MjAsMTcgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5UHJvZmlsZXIo
KSBjb25zdAogICAgIHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c0xl
Z2FjeVByb2ZpbGluZyh0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2Jh
bE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9
IHNsb3QuaXNTdHJpY3RNb2RlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IGZh
bHNlOwotICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJl
c3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5
RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4g
cHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMy4u
ODNlZTM4MTNlOGFjOThhMzdhMjJjZWI5NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDEsNyArNDAxLDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4OWQ5ZGQ2OTQz
OTc3YzEyMjg1MjEwNDdkZDVkNzQyZTQuLjgyOTAxYTc5NDRkYmE2NGExMjAxZGYxNTQ5NTZkNGZh
NDIzNTQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTgwLDIxICs4MCwyMiBAQCBib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0xleGljYWxFbnZpcm9u
bWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
TGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0xleGljYWxFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAg
ICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCkgfHwg
dGhpc09iamVjdC0+aXNMZXhpY2FsU2NvcGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJy
b3JzID0gZmFsc2U7Ci0gICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRT
ZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKKyAgICBi
b29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVX
YXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisg
ICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRocm91Z2gg
dG8gSlNPYmplY3QgYmVjYXVzZSBfX3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCiAgICAgLy8g
cHJvcGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhlciBpbXBsZW1l
bnRhdGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQg
b2JqZWN0LgogICAgIEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpKTsKLSAgICB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRh
dGFQcm9wZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAog
Ym9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBj
NDBhZTg3Mzk1Y2MzMTIyZDY4MDMxZWMyZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3OWM2MTQ0MDI3
ZjNkNjFmODYyNmJmMzQwYjhiM2JkYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xh
c3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZjA4ZmUz
ZDAyYjk5YzgzM2I1NTE3M2ViNTQwODRjMWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1OTJiMzIxOGQ3
MmU3MzRhYzcxZTllY2RmMThhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHZv
aWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBjZWxsLCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOwog
fQogCi12b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAv
LyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJl
c29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5oCmluZGV4IGY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMuLjQzNGJi
N2MzZjhhMjFhZWI4ZDllZjU5YzIyYWZlMWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3
LDcgQEAgY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9u
bWVudCB7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwCmluZGV4IDBmZTljMzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJhYTljMzMwOWRi
ODcuLjQwZGRhNzMzM2ZmNzIwYWRmNjA5OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5jcHAKQEAgLTE1MSwxNyArMTUxLDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNl
aXZlcgogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCAzN2U2NDJlODc0YTQ2ZDEzZjQ2NWUxYTdk
N2M3ZGU0MWNmN2IyN2QxLi44Y2ZlY2ZkMGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4ZjQ3MjY2Nzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH0KIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2UyZTAxYmJhN2Ji
OGE5MTQ3Zjg0ZmYuLjdiN2IzMjNlOThhOTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4MWQyNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAK
QEAgLTc4Niw3ICs3ODYsOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xh
cmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxl
LT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVu
dHJ5LmxvY2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICAg
ICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91
Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRFbnRyeS5sb2Nh
bE5hbWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZh
bHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRN
b2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewpAQCAtODE2LDggKzgxNywxMCBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBt
X2RlY2xhcmVkVmFyaWFibGVzKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBv
ZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKLSAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygp
KQotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52
aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5Lmdl
dCgpKSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNl
LCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAgaWYgKCFvZmZzZXQu
aXNTdGFjaygpKSB7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAg
ICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNV
bmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25v
cmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgpAQCAtODM3LDcgKzg0MCw4IEBAIHZv
aWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhl
YywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7Ci0gICAgICAgICAgICBzeW1ib2xU
YWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7Cisg
ICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1JlYWRP
bmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJl
c3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKaW5kZXggYWY0NzM3ZTliMDJmNTcxMDMwNjVlZTdkOGU3
YmEwNDBkZWMwZDJhYy4uY2I1MTVkODQ0MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5YzcyNDY3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAK
QEAgLTU4LDE0ICs1OCwxNiBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05v
dEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFu
T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wpCitib29sIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgSlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05vdEFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmgKaW5kZXggMGMyNmVjOThiNmZiMTdhODFjZWM5NTlmNzFkNWFjYzQ0OGE0NTdl
Mi4uOWM0Nzk0M2UyMTFhZGVjYWNjYWY5YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaApAQCAtNjksOCArNjksOCBA
QCBjbGFzcyBKU05vdEFuT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBmY2IzNTBhNDlkNTBhNjk0YWI0NmUxYWQ0NTY4NWYx
NjA3MjhkODFmLi5iODYyMjJiYTkzZDlmMmNiODVmMjIxNjU1ZTE5ZjczM2QyZTFjYzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zNzksMTIgKzM3
OSwxMiBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotdm9p
ZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiti
b29sIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDE1ICszOTcsMTUg
QEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdz
LmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4ZWMsIHRo
aXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZXhlYywg
dGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGUpOwogICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0
dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7
CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAg
ICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIGpzQ2FzdDxDdXN0b21HZXR0ZXJT
ZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBqc0Nhc3Q8Q3VzdG9t
R2V0dGVyU2V0dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTQyMywxNiAr
NDIzLDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFvYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+
Y2xhc3NJbmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRy
eShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5KGV4ZWMsIGVu
dHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwgb2JqLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFt
ZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgIFBy
b3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iaik7Ci0gICAgICAgICAg
ICBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHJveHkt
PlByb3h5T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUo
KTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTQ0MSwxOCArNDM4LDIxIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAgIAogICAgIEFTU0VSVCghc3RydWN0
dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXMpOwotICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpICYmIHNsb3QuaXNT
dHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBpZiAoIXB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkg
eworICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2Vs
bCk7CiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNs
b3QpOwogICAgIH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgp
KSB7CkBAIC00NjIsMTUgKzQ2MiwxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIHRoaXNPYmplY3QtPmNv
bnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgICAgIC8vIFJl
bG9vcC4KLSAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5k
ZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAg
aWYgKCF2YWx1ZS5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRJ
bnQzMkZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXgo
Y2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIH0KQEAgLTQ4MiwyMiArNDgwLDIwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbcHJvcGVydHlOYW1lXS5zZXQoZXhl
Yy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49
IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1
YmxpY0xlbmd0aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAg
IHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CiAgICAg
ICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBkb3VibGUgdmFsdWVBc0RvdWJs
ZSA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICh2YWx1ZUFzRG91YmxlICE9IHZhbHVl
QXNEb3VibGUpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRp
Z3VvdXMoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBw
dXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAg
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAg
ICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCkBAIC01
MDUsNyArNTAxLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtwcm9wZXJ0eU5hbWVdID0gdmFsdWVBc0RvdWJsZTsKICAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAg
ICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgocHJvcGVydHlOYW1lICsgMSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKQEAgLTUyNyw3ICs1MjMsNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0
b3I7CiAgICAgICAgIAogICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmpl
Y3QsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKQEAg
LTU0MiwyNiArNTM4LDI4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgCiAgICAg
ICAgIC8vIFVwZGF0ZSBsZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yIGFzIG5lY2Vzc2FyeS4K
ICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0
aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNP
YmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgIGxlbmd0aCA9IHByb3BlcnR5TmFtZSArIDE7CiAg
ICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVTbG90
KSB7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4
T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAgICAgICArK3N0b3Jh
Z2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZh
bHVlU2xvdC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAg
dGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGlu
Z01vZGVXaGVuQXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYgdm0sIEFycmF5U3RvcmFnZSog
c3RvcmFnZSkKQEAgLTEyNDMsNyArMTI0MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vz
c0Zyb20oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVjKTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiti
b29sIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQ
cm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihn
ZXR0ZXIpOwpAQCAtMTI1NCwxMCArMTI1MiwxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldAog
ICAgIGlmICghKGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RW51bWVyYWJsZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9w
ZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpT
T2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXR0ZXIp
OwpAQCAtMTI2OCwyNyArMTI2NiwyNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldAogICAgIGlm
ICghKGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVy
YWJsZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0
aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAg
IEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
KTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXRE
aXJlY3QpOwogCi0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5k
ZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQog
ewogICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwor
ICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3Bl
cnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBB
U1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAg
LTEyOTYsMTggKzEyOTIsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICBpZiAoYXR0
cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9u
bHlQcm9wZXJ0aWVzKCk7CiAgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0
OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsK
KyAgICBib29sIHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChhdHRy
aWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25s
eVByb3BlcnRpZXMoKTsKIAogICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllc1dpdGhQcm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRl
cnNjb3JlUHJvdG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEhhc1Byb3BlcnR5KE8s
IFApIGZyb20gU2VjdGlvbiA3LjMuMTAgb2YgdGhlIHNwZWMuCkBAIC0xODI3LDcgKzE4MjUsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgZwogICAgIHNsb3Quc2V0Q2FjaGVhYmxlR2V0dGVyU2xv
dCh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSwg
b2Zmc2V0KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikK
K2Jvb2wgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3Bh
cnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIG1hcCA9IG1fYnV0dGVyZmx5LmdldCh0aGlzKS0+YXJy
YXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpOwpAQCAtMTgzOCw3ICsxODM2LDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VB
cnJheUVudHJ5KiBlbnRyeUluTWEKICAgICAgICAgZWxzZSBpZiAob2xkRGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAs
IGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVzID0gZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikgJiB+QWNjZXNz
b3I7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
aWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpAQCAtMTg2MSwxMSArMTg1
OSwxMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNl
dCh2bSwgbWFwLCBhY2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBk
ZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5S
ZWFkT25seTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpOwogICAgIGVudHJ5
SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVu
dChvbGREZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRGVmaW5lZCBpbiBF
UzUuMSA4LjEyLjkKQEAgLTIwMDQsNyArMjAwMyw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2Nh
dGVTcGFyc2VJbmRleE1hcCgpCiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xl
YXIoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3Vy
cmVudCA9IHRoaXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Ig
d2l0aCByZXNwZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBA
IC0yMDE2LDE0ICsyMDE1LDE0IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlm
IChzdG9yYWdlICYmIHN0b3JhZ2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VB
cnJheVZhbHVlTWFwOjppdGVyYXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQo
aSk7CiAgICAgICAgICAgICBpZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91
bmQoKSAmJiAoaXRlci0+dmFsdWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkp
IHsKLSAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9y
YWdlLT5tX3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAg
ICAgICBwdXRSZXN1bHQgPSBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdl
LT5tX3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChj
dXJyZW50LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9i
amVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAg
IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9u
KGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjAzNSwxNyArMjAzNCwxNyBAQCBi
b29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1w
dFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAg
IEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGUoKTsKICAgICBpZiAocHJvdG90eXBl
VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4g
YXNPYmplY3QocHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlRm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAg
cmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cs
IHB1dFJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgot
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChp
bmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAg
ICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMDU5LDE2ICsyMDU4LDE1
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+
PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZv
clZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAg
ICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9y
VmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAg
ICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZ
X0lOREVYKTsKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNw
YXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAg
ICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2Up
OwogICAgICAgICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAg
ICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEp
OwpAQCAtMjA3OSwzMSArMjA3NywzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNh
c2UgSW50MzJTaGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAg
ICAgY2FzZSBEb3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7
CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAg
ICAgQVNTRVJUKHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRl
cmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250
aWd1b3VzU2hhcGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwg
dGhpcywgdmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0Fy
cmF5LmNwcC4KLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogCkBAIC0yMTMwLDEyICsyMTI5LDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5z
CiAgICAgICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9y
YWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8s
IG9yIGNhbid0IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBh
IHNwYXJzZSBtYXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJz
ZUluZGV4TWFwKGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9
CiAKICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjE0NSw3ICsyMTQz
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJh
eVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNS
ZWFkT25seSgpIHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYg
KHNob3VsZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSAr
IDE7CiAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjE1NCwxMCArMjE1
Miw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1
c2luZyBhIG1hcCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4K
ICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1v
ZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9u
IGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8
ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWlu
Y3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5w
dXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZv
clZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0
aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVj
LCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFn
ZSBhZnRlciBpbmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3Iu
CiAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjE3NSw5ICsyMTcxLDEwIEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjE4Nywy
NSArMjE4NCwyMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAg
ICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAg
ICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJl
QXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2ll
bnRseUJleW9uZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpIHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBz
aG91bGRUaHJvdywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0
SW5kZXhpbmcoKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0
byB0aGUgU2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVB
cnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsK
LSAgICAgICAgICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhp
cywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
QUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjIxMywzOCArMjIwNywzMyBAQCB2
b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAg
IGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAg
ICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4
ZWMsIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJ
R1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1
ZSk7CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToK
ICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8g
b3duIHByb3BlcnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGlu
IHRoZSBzcGFyc2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJh
eVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAt
PmNvbnRhaW5zKGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJv
b2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5z
KGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJy
YXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9k
ZSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQxOCwxNSArMjQwNywxNSBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0
aXZlSW50cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVy
KiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIG5hbWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAg
ICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0
dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiti
b29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCog
bmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQz
NCw3ICsyNDIzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7
CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNp
Yyk7Ci0gICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKIH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTI3NDUsMTIgKzI3MzQsMTEgQEAgc3RhdGljIGJv
b2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3Bl
cnR5TmFtZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQotICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7Ci0gICAgZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlKTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAyMjYyOGUwOTM1MWUyZTgwMWFi
NmVhODdkODcwZDY0YWNhZGM2M2IzLi4zNjFmMjZjMGRmNTJlZTU5ODZkZjYwYjdhYzBiNDdmZTRh
MTgyZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1
OCwxOCArMTU4LDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IHJldHVybiBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAg
ICAKLSAgICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJ
bmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGluZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVy
dHlOYW1lKSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAg
ICAgICByZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAg
ICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0xOTEs
NyArMTkxLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAg
ICAvLyBBIG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGlyZWN0SW5k
ZXguCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7
CiAgICAgICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAgIHsKQEAg
LTQ4NCwxNSArNDg0LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ly8gIC0gYWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0ZXMgd2ls
bCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdp
dGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5hbWUgaXMg
YXNzdW1lZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1
dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDAp
OwotICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RBY2Nlc3Nv
cihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0m
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wg
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRHZXR0ZXIo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
LSAgICB2b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRTZXR0
ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3Bl
cnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02MTgsOCAr
NjE4LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHB1dERp
cmVjdChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2Nh
dGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQg
cHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCos
IElkZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0
aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dl
dHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVu
Y3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtNjkw
LDcgKzY5MCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXMg
ZXF1aXZhbGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0
QnlJbmRleE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0dXJucyAw
IGlmIGludDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVzZQogICAg
IC8vIGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLCBv
ciBiZWNhdXNlCkBAIC04MzYsOCArODM2LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9u
KTsKIAogICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAgIHZvaWQg
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOworICAg
IGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSop
OwogCiAgICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5ld0xlbmd0
aCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg0Niw3ICs4NDYs
NyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAgICB2b2lk
IG5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAotICAgIGJv
b2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAv
LyBDYWxsIHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQgYW5kIHlv
dSdyZSBzdXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAgLTg5MSw3
ICs4OTEsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0
RGlyZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBORVZFUl9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVW
RVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwpAQCAtOTAwLDkgKzkwMCw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFibGVWYWx1
ZSogZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIAot
ICAgIHZvaWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRy
eSosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsK
KyAgICBib29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50
cnkqLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7
CiAgICAgICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0
RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0
RGlyZWN0SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5k
ZXhNb2RlKTsKICAgICAgICAgCkBAIC0xNDIzLDE5ICsxNDIzLDE5IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYg
IShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0
dGVyU2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZh
bHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1v
ZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwor
ICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZGIxNzBmMjk4
Y2IyNTU5YzdlMzdhMTJlZTExMDJjMDA5MGM1MDhhMC4uOWQ1MzM0MWExNDgyYzJlOTY2YzMyNDBj
MWIzMDJkZWUyODBlNjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
UHIKIH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1
dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVj
dCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRo
aXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBu
YW1lcyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxv
b2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0
QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxp
bmUoZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpCi0g
ICAgICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNPYmplY3Qt
PnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhpc09iamVj
dC0+cHV0SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
Y3BwCmluZGV4IDkzN2MwODg3NDVmOGJiN2NmZmJkZjdhZTE5M2M1MmJlNWNmN2I3Y2YuLjYwODM1
MjkzNTA5ZWUwZGUwNzE2OGFiZTdmN2EyZWFjNjQxZWE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBKU1Byb3h5
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTUHJveHk6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+
dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRC
eUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcyYWJjZWJh
ODdmZmIwNmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2NmFmYjgw
YjliYmFlZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAt
NzYsOCArNzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBK
U09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVhYzIzNmY3
NmFiYWI4MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRmNTdjOGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1v
ZGUgewogdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlw
ZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQo
CiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25s
eUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCwg
Ym9vbCYgcHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYgKzE3MCw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVudHJ5Lmlz
UmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAgIGlmIChz
aG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
IHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IApAQCAtMTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
Ly8gdGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJ
IGRvbid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICBy
ZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBl
PgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3lt
Ym9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0
KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJs
ZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9u
bHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xU
YWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVh
ZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJp
YWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFi
bGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hw
b2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wg
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAg
IGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3Jz
LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRh
YmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJv
bFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChz
ZXQpCiAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmpl
Y3QsIHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3Vu
ZCB0aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJs
ZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91
Y2hXYXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVs
bHB0cjsKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJv
b2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9s
VGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9s
VGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkK
ICAgICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5oCmluZGV4IDFlNzAyMTUxOWI4ZTdlYzFkMjJkODMzOGNjMzhjMjg4MWQzZWZmNzMu
Ljk0Njg1OTU1ZGMyNzE2ZDM2NTA5NmFiZTIwNWRkYWE0OGZhYWE5ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjQgKzI4NCwzNCBAQCBpbmxpbmUgYm9v
bCBnZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRh
YmxlLCBUaGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJv
cGVydHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQg
d2FzIGNhbGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlz
IGJlaW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJn
ZXQpLgogLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3Jp
Z2luYWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBp
dHNlbGYpLgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
VGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJy
aWRlIHByb3BlcnR5LgogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pIHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHRoaXNWYWx1ZSkpCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgewogICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgfSBlbHNlIGlmICgh
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsK
ICAgICAgICAgSlNWYWx1ZSB1cGRhdGVUaGlzVmFsdWUgPSBlbnRyeS0+YXR0cmlidXRlcygpICYg
Q3VzdG9tQWNjZXNzb3IgPyBzbG90LnRoaXNWYWx1ZSgpIDogSlNWYWx1ZShiYXNlKTsKICAgICAg
ICAgZW50cnktPnByb3BlcnR5UHV0dGVyKCkoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHVwZGF0ZVRo
aXNWYWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOwogICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21B
Y2Nlc3NvcihiYXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVy
KCkpOwotICAgIH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBlNTlkM2FiMDYwOWUxNDRiMTE3MTlkMzkxMTAx
ZjExM2IwYmQxYjZmLi4wZTJjMDJhYTVhNzY4ODE1NzdmY2Y2ZDRiYTdlNzdiZDM3ZmM5MDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0z
NDUsMTIgKzM0NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbj4KLXZvaWQgUHJveHlPYmplY3Q6OnBl
cmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlv
biBwZXJmb3JtRGVmYXVsdFB1dCkKK2Jvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVs
dFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmICghdm0uaXNTYWZlVG9S
ZWN1cnNlKCkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2bS5w
cm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpKSkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlz
VmFsdQogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlm
IChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4g
T2JqZWN0LiIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFs
dWUpOwpAQCAtMzY3LDEyICszNjcsMTAgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBD
YWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPnNldCwgQVND
SUlMaXRlcmFsKCInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUg
Y2FsbGFibGUuIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwotICAgIGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBw
ZXJmb3JtRGVmYXVsdFB1dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzZXRN
ZXRob2QuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0UHV0KCk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFw
cGVuZCh0YXJnZXQpOwpAQCAtMzgxLDYyICszNzksNjEgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVy
Zm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1Zh
bHUKICAgICBhcmd1bWVudHMuYXBwZW5kKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSB0cmFwUmVz
dWx0ID0gY2FsbChleGVjLCBzZXRNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwg
YXJndW1lbnRzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRy
YXBSZXN1bHQudG9Cb29sZWFuKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCF0cmFwUmVz
dWx0QXNCb29sKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGlmICh0YXJnZXQtPmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7CiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25m
aWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAo
IXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHB1dFZhbHVlKSkgewogICAgICAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVy
dHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUg
dmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCcuIikpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHBy
b3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZS4iKSk7Ci0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBQcm94eU9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90bykgewotICAgICAgICBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pCisgICAgICAgIHJldHVybiBC
YXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBQ
cm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAg
IGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewogICAgICAgICBKU09iamVjdCogdGFy
Z2V0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVjdC0+dGFyZ2V0KCkpOwotICAgICAgICB0
YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfTsKLSAgICB0
aGlzT2JqZWN0LT5wZXJmb3JtUHV0KGV4ZWMsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBwcm9w
ZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cGVy
Zm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJm
b3JtRGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBQcm94eU9iamVjdDo6
cHV0QnlJbmRleENvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpOyAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8g
cGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0g
dGhpcy0+dGFyZ2V0KCk7CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gc2hvdWxkVGhyb3c7
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgaXNTdHJpY3RNb2RlKTsg
Ly8gV2UgbXVzdCBwcmVzZXJ2ZSB0aGUgInRoaXMiIHRhcmdldCBvZiB0aGUgcHV0QnlJbmRleC4K
LSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50
LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RU
YWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50LmltcGwoKSwgcHV0VmFsdWUsIHNsb3Qp
OwogICAgIH07Ci0gICAgcGVyZm9ybVB1dChleGVjLCBwdXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVu
dC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAgICByZXR1cm4gcGVyZm9ybVB1dChleGVj
LCBwdXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KTsK
IH0KIAotdm9pZCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQorYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IGI2OGNhYzQ0YmVkOTA4OTY4
YjZkZmIzNGUzOTAwMTEzZGFkNDFjNDIuLjU1NTk3OGNmNWM4MjJlOTU1YTU3OTJmZjI0OGFjYmNj
ZDI2YzU1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
aApAQCAtNjIsOSArNjIsOSBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICBKU09iamVjdCogdGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7
IH0KICAgICBKU1ZhbHVlIGhhbmRsZXIoKSB7IHJldHVybiBtX2hhbmRsZXIuZ2V0KCk7IH0KIAot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleENvbW1vbihF
eGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToKICAgICBQcm94eU9i
amVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBQcm94eU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVm
YXVsdERlbGV0ZUZ1bmN0aW9uPgogICAgIGJvb2wgcGVyZm9ybURlbGV0ZShFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbik7CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci0gICAgdm9pZCBwZXJmb3JtUHV0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUs
IFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24pOworICAgIGJvb2wgcGVyZm9ybVB1dChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQ
ZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKICAgICBib29sIHBlcmZvcm1QcmV2ZW50RXh0ZW5z
aW9ucyhFeGVjU3RhdGUqKTsKICAgICBib29sIHBlcmZvcm1Jc0V4dGVuc2libGUoRXhlY1N0YXRl
Kik7CiAgICAgYm9vbCBwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXgg
MTliZjFjNTZkMzA3NTI1OWEyNDFhOGM1NTk2NGQ4ZTIxZTNiZTBjZi4uNDUwMTY5OTU4ZjUxYTk5
NzU2NDI2Y2U1M2FlZjYxMzdmNWVkYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
T3duS2V5cyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90
eXBlT2YoRXhlY1N0YXRlKik7CiAKIH0KQEAgLTY3LDYgKzY4LDcgQEAKICAgICBpc0V4dGVuc2li
bGUgICAgICAgICAgICAgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZSAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCiAgICAgb3duS2V5cyAgICAgICAgICAgICAgICAgIHJlZmxlY3RPYmpl
Y3RPd25LZXlzICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHByZXZl
bnRFeHRlbnNpb25zICAgICAgICByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBzZXQgICAgICAgICAgICAgICAgICAgICAgcmVmbGVj
dE9iamVjdFNldCAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAg
c2V0UHJvdG90eXBlT2YgICAgICAgICAgIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZiAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogQGVuZAogKi8KQEAgLTE5Nyw2ICsxOTksMjggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lv
bnMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlc3VsdCkpOwogfQogCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LnNldAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCBy
ZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICBKU09iamVj
dCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKKworICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0OworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPj0gNCkKKyAgICAgICAgcmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVu
dCgzKTsKKworICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFw
cGVuIGluIHN0cmljdCBtb2RlLgorICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2U7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIGlzU3RyaWN0TW9kZSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1
bWVudCgyKSwgc2xvdCkpKTsKK30KKwogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCmluZGV4IDRmZGFlYjRhNDlhOWM3YjFiNTFjYmY1M2RjY2QwMmU0ZTA1YTJkNTAuLjM4Yzli
OTM1NDkxYmJiODA5OWZmMmFjN2E3MjJiMDUwMDM1NGNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtMTQ3LDE2ICsxNDcsMTYgQEAg
c3RhdGljIHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgdGgKICAgICBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUp
LCBmYWxzZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKLSAgICAgICAgYXNSZWdFeHBPYmplY3Qo
Y2VsbCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRleChl
eGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9t
VmFsdWUoYXNSZWdFeHBPYmplY3QoY2VsbCksIHNsb3QuaXNTdHJpY3RNb2RlKCkKICAgICAgICAg
ICAgID8gcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0CiAgICAgICAgICAgICA6IHJlZ0V4
cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVj
KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYTYyNmQyOTEyZWE4ZWE4ZjI1NDNmNTE3
ODI2MGUyZjhmZDVlN2I1Ny4uYjk0MWVlOTBkNTA1NGE1MjkxMmM1N2ZmNTAzMDBiZGQ0NjhlNzAx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAg
LTQxLDIwICs0MSwyNiBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgdm9pZCBzZXRSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHIpIHsgbV9yZWdFeHAu
c2V0KHZtLCB0aGlzLCByKTsgfQogICAgIFJlZ0V4cCogcmVnRXhwKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHAuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhl
Yywgc2l6ZV90IGxhc3RJbmRleCkKKyAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4
ZWMsIHNpemVfdCBsYXN0SW5kZXgpCiAgICAgewogICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkpOwotICAgICAgICBpZiAoTElLRUxZ
KG1fbGFzdEluZGV4SXNXcml0YWJsZSkpCisgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJ
c1dyaXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFy
cmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgdm9pZCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRUaHJvdykKKyAgICBib29sIHNldExh
c3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbGFzdEluZGV4LCBib29sIHNob3VsZFRo
cm93KQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQor
ICAgICAgICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAg
IG1fbGFzdEluZGV4LnNldChleGVjLT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwotICAgICAgICBl
bHNlIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBKU1ZhbHVlIGdldExhc3RJbmRleCgpIGNvbnN0CiAgICAg
ewpAQCAtNjUsNyArNzEsNyBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmNwcAppbmRleCA5YTVkYTgzOTU3YzMyNGU4ZGFmNDAyNWRmNDE0OTUyZDg0YzA1NzM5Li5j
OGUwMDNiZjg1OTgyNjFiOTM2MGQ3Y2I2YjYxYjhiN2I3MmVhNjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAt
ODgsNyArODgsNyBAQCBTdHJ1Y3R1cmUqIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCitib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCkBAIC0xMDIsMTAgKzEwMiwxMCBA
QCB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLAogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9y
KTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGVudHJ5LnB1dChl
eGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gZW50cnku
cHV0KGV4ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIFNw
YXJzZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBh
cnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0
RGlyZWN0SW5kZXhNb2RlIG1vZGUpCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCB2b2lkIFNwYXJzZUFy
cmF5RW50cnk6OmdldChQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiAgICAg
ZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKEJhc2U6OmdldCgpLCBhdHRyaWJ1dGVzKTsKIH0KIAot
dm9pZCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQorYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBzZXQoZXhlYy0+dm0o
KSwgbWFwLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgY2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1
ZSwgc2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgcmV0dXJu
IGNhbGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRo
cm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFy
cmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA3NTRiNTNkOWQ2
MDFkZjJhY2Q3YmNhZjJlOTRhZWY2ZDMzN2RmYTIuLmY3MWRjOTk0ZTg5NGE3MjgzYTU3MmIzMzI2
YzllODc2MWI5MjJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNwYXJzZUFy
cmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKIAogICAgIHZvaWQgZ2V0
KEpTT2JqZWN0KiwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICAgdm9pZCBnZXQoUHJvcGVydHlE
ZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
KyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlW
YWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTVmFsdWUgZ2V0Tm9u
U3BhcnNlTW9kZSgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTEwNiw3
ICsxMDYsNyBAQCBjbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50
cyBvZiB0aGUgbWFwCi0gICAgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVu
c2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEVudHJ5KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSk7CiAgICAgQWRk
UmVzdWx0IGFkZChKU09iamVjdCosIHVuc2lnbmVkKTsKICAgICBpdGVyYXRvciBmaW5kKHVuc2ln
bmVkIGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDA5ODhkNmQwNjkwMjk4OTA0ZWQ1OTlh
MWRlODhjN2YzZDA0NTRhM2QuLmMyODdlZjhlMGUyNmM2NTZlYWFkYzJmZWU3MzgwNGJhMDY0Yzgw
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cApAQCAtNjAsMjUgKzYwLDI1IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmlu
Z09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAg
ICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIEpTT2JqZWN0OjpwdXQo
Y2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZv
aWQgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
Citib29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTdHJpbmdPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIz
Y2ZkZjFkYTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCAr
NDksOCBAQCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggY2E3OTEzMmQ1ODNmZDVk
ZDRmOTUzZDg5MWQ2ZjYxMTdmYmVmODAwOC4uZTM0ZmNhODFjYzhkYzI1NmNmM2JjODNlNjkzM2Mz
Mzk2Zjk0YzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3Nyw3
ICsxMDc3LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19u
ZXcudGFyZ2V0X21ldGFfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L1JlZmxlY3RfUmVmbGVjdC5zZXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1Jl
Z0V4cC5wcm90b3R5cGVbU3ltYm9sLm1hdGNoXS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3lt
Ym9sLnJlcGxhY2VdLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273020</attachid>
            <date>2016-03-04 11:53:45 -0800</date>
            <delta_ts>2016-03-04 12:03:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160305045329.patch</filename>
            <type>text/plain</type>
            <size>189904</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NThiZDdjYjY4M2NmNzZjZGI5ZDNiZWIyZDc1Mjc4NmJkYjc0ZDc2Li45MGE4MjM2YTdiYzVkNWVm
OTU5NThjNzY5Yzk3YTAyZmNlZTFjMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTYtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNl
dHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpwdXQpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRJbmxpbmUpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnB1dCk6
CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1
dCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRC
eUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFNldHRlcik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
ZGV4ZWREZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRy
aW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleCk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChK
U0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6c3lt
Ym9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6
bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24pOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6c2V0
TGFzdEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgor
ICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeSk6CisgICAgICAgIChK
U0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6
cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAg
KiB0ZXN0cy9lczYueWFtbDoKKwogMjAxNi0wMy0wNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXgu
IExleGljYWwgYmluZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gaW4gZ2Vu
ZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1YzEzZDZiMzY3NTE5ZTBmN2Q4ODI5ZWM0OTljZWM5NzQy
M2YwODkuLjQzZDg4NTVjMDdiYjMyMmJhYzcxYzQ3YWNmNzAzZjU0ZDJlYTg2ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNi0wMy0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5zZXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAyNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0
RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEludGVyZmFjZTo6cHV0QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVudGltZS5jcHA6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6Cisg
ICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL2pzYy9Ccmlk
Z2VKU0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6c2V0VmFs
dWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0VmFs
dWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1
dCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpS
dW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRl
eCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVj
dDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAxNi0wMy0w
MyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcG9zZWRU
cmVlSXRlcmF0b3IgbWF5IHRyYXZlcnNlIHNsb3R0ZWQgbm9kZXMgbXVsdGlwbGUgdGltZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCA2MjdlN2Y0ZDlhNjc4YzE4YWM2ODBmZGQxMWQwNzgzOTNlZjc1MzNk
Li41YTEzMzhhMzA2NTFlNzFmYTY0OGY0ZTg3NDc0MGQyMDk4NmY2NzZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKToKKwog
MjAxNi0wMi0yOSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCB0aGUgbmV3IHZlcnNpb24gb2YgQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcidzIHNob3dN
ZW51Rm9yUmVjdCBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWU1YTdiNzVhODk2YmY4MWZkZjhkZDM2
ZDhjNjE5YjM2YjQwNTQzYS4uZjY5YWJkNmM5OGY1ZjJkYTExZDA4ZWQ1MzczMzc0MGExNzNhNTU0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAzLTA0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZs
ZWN0LnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkpTTlBPYmplY3Q6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaDoKKwogMjAxNi0wMy0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjE5Njc3MCk6IFVuYWJsZSB0byB1c2Ug
SGlwQ2hhdCBNYWMgYXBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oCmluZGV4IGFkZGQyMTk4NjMzOWUzYzFkMGIxZTQwY2UyYmFlN2Y3Y2RiN2Y3NmQuLmU5
NTYzZjU0Y2VhOGIyNjNiMTQzMzU2NzIxZDRjZGRkNzljNWU0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0xODEsOCArMTgxLDggQEAgY2xh
c3MgSlNDYWxsYmFja09iamVjdCA6IHB1YmxpYyBQYXJlbnQgewogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDZlMGE2
Y2ViNGJlYjc5N2VhZmQxNjc5ODhlYzRkOGE3NWQ0MzE1OTguLmMxYTZkNzQ5NmY1Njc3ZmNiNGMz
ZDk1ODc3M2U1YWQ1YzU3YzM5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0yMjIsNyArMjIyLDcgQEAKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7
CkBAIC0yNDQsMTMgKzI0NCwxMyBAQAogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5z
dGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRy
eSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0
eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnktPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHJlc3VsdDsKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTI3Miw5ICsyNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAo
UGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBnZXRTbG90KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAg
ICAgdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5KU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODQsNyArMjgzLDcgQEAKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
SlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4o
Y2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMzA2LDEzICsz
MDUsMTMgQEAKICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNz
LT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5
KiBlbnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlD
YWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVzdWx0OwpAQCAtMzIzLDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzMSw3ICszMzAsNyBAQAogICAgICAgICBp
ZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBq
c0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgIGlmIChTdGF0aWNG
dW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KHByb3BlcnR5TmFtZS5p
bXBsKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCBjM2VmYmQ1NmRkNzBkZWFjYTM2MzM5MjRhOTIy
OWQzNjEzOTMyMDE1Li4zNjUwMjRlODhmMjZhZTE0NmE5ZThiYTRjYzJmNGNiZDVhMzU0YWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3Bw
CkBAIC05OCwxNSArOTgsMTUgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9
IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlk
KCkpOwogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmpl
Y3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwogICAgIHNsb3Quc2V0VGhpc1ZhbHVlKEpTVmFs
dWUodGhpc09iamVjdCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5k
ZXggZmVmNjBjODk5ZjdmMTQ4M2UzMmNjN2E4MzgzM2UwYWY5NDA0NzJkYi4uZTM0ZjQ5N2Q3ZmIz
MzNhYWVlNzYwOTI0Mzg2NGYzNWMwYTc4YTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIERlYnVn
Z2VyU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAppbmRleCBjNDViYmVjMTI5YjZiN2I4MDUzZmRhMDVlNWFiMDZiOGFmODdl
YzA3Li5kZGU0OWYwODk3YjhjODMyMzM4NWVmNjhmMTk3MGRjZGEwYzczZDg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1Ymxp
YyBKU0FycmF5IHsKICAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCisgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCmluZGV4IDIyYmM0M2Q5Yjk4MjdjYjlmMWQwMjc2ZjcwOWY3ZWE2YzIxMDM3
MjcuLmQzNzZiNjMxOWE5NTQwOWNlYzY5Yjg1MzExY2ZiZTA1OTM4NGU0OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC00OSwxMCArNDksMTAgQEAgc3Ry
dWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1
Y3REYXRhRnVuY3Rpb25QdHIpKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBHZXRDb25z
dHJ1Y3REYXRhRnVuY3Rpb25QdHIgZ2V0Q29uc3RydWN0RGF0YTsKIAotICAgIHR5cGVkZWYgdm9p
ZCAoKlB1dEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICB0eXBlZGVmIGJvb2wg
KCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgUHV0RnVuY3Rpb25QdHIg
cHV0OwogCi0gICAgdHlwZWRlZiB2b2lkICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgcHV0QnlJbmRleDsKIAogICAgIHR5
cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA4MjQxZDZlMGMwNzU2NDQ3MWM1YTlkYTUyZTE2ZDFi
YTczYmVmOTk1Li40ODFmMTZiM2U5ZWVhZmJjNTNlN2Q1MTg0ZWM0NTQ0NzFhZDJiMTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwogfQogCi12
b2lkIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgQ2xvbmVkQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1
bWVudHMqPihjZWxsKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTc4LDExICsxNzgs
MTAgQEAgdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1YKICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpIHsKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJp
YWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
ZHVtbXkgPSBzbG90OyAvLyBTaGFkb3cgdGhlIGdpdmVuIFB1dFByb3BlcnR5U2xvdCB0byBwcmV2
ZW50IGNhY2hpbmcuCi0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwg
dmFsdWUsIGR1bW15KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwogICAgIH0KICAgICAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9
CiAKIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCA4ZTcxM2Q1YzZmYTVjYTE4NDEz
NGIwNTJiMmQ1ODk5YTI2NzdhMzBlLi41ZDIyMjE4M2M5ZTcwODMyOTRiMTQxNzZkYTRlZjU2MTk3
Y2JiM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBDbG9uZWRBcmd1bWVudHMgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHMuaAppbmRleCA2N2YxYjAzNDVkNzFiOGQzMzYyZjY2YmI2NWUyZGNmM2EzNWQyYWE0Li5lZGNj
NmYxYjk4ZDZkYWRmODg5N2U4YWYyZmYwMjI0NDUyOWIzZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC00Nyw4ICs0Nyw4IEBA
IGNsYXNzIEdlbmVyaWNBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCA5YjE4MDAxODU3ODEwNWM1NTE2OTcyMGFl
NTg3N2MzZTNlMjQ2ZGVlLi5kMmViMzcxMTUyMTI2NDVjMzE2Zjc5ZDQyZTIzYjc4MGZkZGJlZGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KLXZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganND
YXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTA4LDI4ICsx
MDgsMjcgQEAKICAgICAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyh2bSk7CiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBkdW1teSA9IHNsb3Q7IC8vIFRoaXMgcHV0IGlzIG5vdCBj
YWNoZWFibGUsIHNvIHdlIHNoYWRvdyB0aGUgc2xvdCB0aGF0IHdhcyBnaXZlbiB0byB1cy4KLSAg
ICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgaWRlbnQsIHZhbHVlLCBkdW1teSk7CiAgICAgfQogICAgIAogICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2Jq
ZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhp
c09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4KLXZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFR5cGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAg
ICBpZiAodGhpc09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGluZGV4KSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBC
YXNlOjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXgg
MmNkNjZlNWNkNDJmZDAxZGI1MmRlMGQ3NmJjZjRkMjE5MWVmN2NiOS4uODczMDc5NGEzNDI4ZjZk
NWVhOGU5YTJiOGNiYTIxNGMxN2JjODQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgSlNWYWx1ZSBjYWxs
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRl
cikKICAgICByZXR1cm4gY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFz
ZSwgQXJnTGlzdCgpKTsKIH0KIAotdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUg
ZWNtYU1vZGUpCitib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0
ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJO
dWxsKCkpIHsKICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCiAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICBKU09iamVjdCogc2V0dGVyID0gZ2V0dGVyU2V0dGVyT2JqLT5zZXR0ZXIoKTsKQEAgLTEwMyw2
ICsxMDMsNyBAQCB2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbAogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIs
IGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgYXJncyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaAppbmRleCBjZDIwNDAyOGVmOWNhZTI5ZjgyMTRmYzZiZmFmM2FlYjU1NmYzZjkx
Li4yYjIyYjNlMGIwYzAwYzkyN2JmNWNiZDkwMDQ5Y2ZlOTE4ZTUxN2JjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBA
IGlubGluZSBHZXR0ZXJTZXR0ZXIqIGFzR2V0dGVyU2V0dGVyKEpTVmFsdWUgdmFsdWUpCiB9CiAK
IEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0
dGVyU2V0dGVyKTsKLUpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7
CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSwgRUNNQU1vZGUpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCBhZmRiZTBkZTc2ZWQ3OWEyYzczNDNkYTdmNzFiMDZhN2ViZWQxYTRmLi4yNjMzMjMzNGNj
NjI0YWRiZjgzMjQ1ZjViM2ZiY2FiNzJiMzU5MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQXJyYXk6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwogCkBAIC0xOTgsMTMgKzE5OCwxMiBAQCB2b2lk
IEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYQogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50
b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRp
Y19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGgiKSkpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChl
eGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90
LmlzU3RyaWN0TW9kZSgpKTsKICAgICB9CiAKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBi
b29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtNjQ0LDcgKzY0Myw4IEBAIHZvaWQgSlNB
cnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIAogICAg
IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogewogICAgICAgICB1bnNpZ25lZCBv
bGRMZW5ndGggPSBsZW5ndGgoKTsKLSAgICAgICAgaWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2YWx1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgYm9v
bCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2YWx1ZSwgdHJ1ZSwgcHV0UmVzdWx0KSkgewog
ICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBvbGRMZW5ndGggPCAweEZG
RkZGRkZGdSkKICAgICAgICAgICAgICAgICBzZXRMZW5ndGgoZXhlYywgb2xkTGVuZ3RoICsgMSwg
dHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKaW5kZXggNDViNTU4YjIwMDk4MTE4ZjllM2UxNjIwODk0N2ZjZTY3NmI5OWViNS4u
M2E5NGUzNDViMzYwNmZkMjQ3MTNmOWYxZjM5ZTQ4NmMwY2E2NmFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIEpTQXJy
YXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgfQogICAgICAgICAKIHByb3RlY3Rl
ZDoKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCAzNTlhZTQ3YTUwYmU3ZWMyODAyODcwYzk2Nzc0ODQ2
NDMwZTM0NGIxLi42ZGRlNGM3ZGZmY2EzMjMzMDBjNzg1Nzg3YTUyNzYwYWFjNTA2Y2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAt
NzksMTggKzc5LDE2IEBAIGJvb2wgSlNBcnJheUJ1ZmZlcjo6Z2V0T3duUHJvcGVydHlTbG90KAog
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0FycmF5QnVmZmVyOjpwdXQoCitib29sIEpT
QXJyYXlCdWZmZXI6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyKj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkgewotICAgICAgICByZWplY3QoZXhlYywgc2xvdC5p
c1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkg
YnVmZmVyIHByb3BlcnR5LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpCisgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3Jp
dGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpOwogICAgIAotICAgIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlCdWZmZXI6OmRlZmluZU93blByb3BlcnR5KApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IGQ2MzRk
NzM2M2ZlNGE1MDhiOGFiOTgwY2ZiMDY1ZjMxMWE3YWE2ZTguLmY3Njc1MzgzNzg0NGYwYTZmYjVh
YzdjNDljYTI5YTM0NTM0Mzc5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDNiZmNhZjE1
MjE5OTI1YjkzZWQ3ODdmNDE1MDFjOWI3N2JiNTViMTEuLmQ0YjVjYzBjNDM2YjU4MWJlYjE2OTQ4
Y2E3MzJmMDA2MWY2MjFjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTE2NCwxNyArMTY0LDE1IEBAIHZvaWQgSlNB
cnJheUJ1ZmZlclZpZXc6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwog
fQogCi12b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXJWaWV3
OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZm
ZXJWaWV3Kj4oY2VsbCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVmZmVyKSB7Ci0gICAgICAgIHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgp
LCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFkLW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHku
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNs
b3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBl
ZCBhcnJheSBwcm9wZXJ0eS4iKTsKICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Fy
cmF5QnVmZmVyVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA1MjNhMjAwZmJhMmQ3NzJj
MmI3M2YyZDRjNWZjNjVjNzEyZjZiOWJmLi5iMmNmNWEyYjE5OTllNWQ3ZWEyZThhNDg3NWViZTQ3
MzhlMDg4YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAppbmRleCBiOWRkMGE0MTdkODAzYjBlNDVkYWVjZTI4ODQ0NWVlMTJkZjU3ODM2Li5k
M2M4MmZhNmI2ODIxMWNmOTZkMmZhZGU4YmExZDcxMDMzNzFiZWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMTI5LDE0ICsxMjksMTIgQEAg
SlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogfQogCiAvLyBFQ01BIDguNy4yCi12b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisg
ICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJl
IGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2Jq
ZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwpAQCAtMTQ3LDcgKzE0NSw3IEBA
IHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1OSwx
OCArMTU3LDE2IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdl
dERpcmVjdChvZmZzZXQpOwotICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsK
LSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4ZWMsICp0aGlzLCBncywgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVy
U2V0dGVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMs
IGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RN
b2RlKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKICAg
ICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRyaWJ1dGVzICYgQ3Vz
dG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUg
b2JqZWN0IG9yIG9uZSBvZiBpdHMgCkBAIC0xODUsMjIgKzE4MSwyMiBAQCB2b2lkIEpTVmFsdWU6
OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwotICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+
IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywg
c2hvdWxkVGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQotICAgIAotICAgIGlmIChzeW50
aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
Rm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlm
IChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4
T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAg
ICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2
b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA2OTAzYmUxMzA3OTNkNThjMWJlNTli
NmRjYTlkZGExNTgxY2Q3N2UwLi5lY2M0ZTk2MTVhMTRiNmU5MzEzNTNkYjlhNTY4NDUxMzNiYjZm
YTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0y
NzksMTEgKzI3OSwxMSBAQCBjbGFzcyBKU1ZhbHVlIHsKIAogICAgIGJvb2wgZ2V0UHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAKLSAg
ICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHZvaWQgcHV0SW5saW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRU
b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1
dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0
QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSB0b1RoaXMoRXhlY1N0YXRlKiwgRUNNQU1vZGUp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAppbmRleCA3NmRiMzU2YzE5ODVkMTU3MjA1MmQyYTQ1Y2UyOTllM2NhNTI2OTY3
Li4xMzEyMGFmODg0ZmRjM2YzZDVkZDRmMWJlZWRjNjM1NGI0ZjM3Njk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTc4NSw0
MCArNzg1LDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRl
KiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGdldChleGVj
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0YXRpY19jYXN0PGRvdWJsZT4ocHJvcGVydHlOYW1l
KSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGlmIChVTkxJS0VMWSghaXNDZWxs
KCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisKKyAgICByZXR1cm4gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1BTFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAg
ICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAg
cmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
CiAgICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CiAgICAgYXV0byBwdXRNZXRob2QgPSBjZWxs
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0OwotICAgIGlmIChMSUtFTFkocHV0TWV0aG9k
ID09IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAgICAgIEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0gSlNPYmplY3Q6OnB1dCkpCisgICAgICAgIHJl
dHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IG90aGVyU2xvdCA9IHNsb3Q7Ci0gICAgcHV0
TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90aGVyU2xvdCk7CisgICAg
Ym9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
b3RoZXJTbG90KTsKICAgICBzbG90ID0gb3RoZXJTbG90OworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIGlmIChV
TkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFz
Q2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgaWYg
KFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworCisgICAgcmV0dXJu
IGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleChhc0NlbGwoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBpbmxpbmUgSlNW
YWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA1MzZjODE5YTFmNzlkNjY4MGM0MWJlZjlj
YjA1NjM0MWJiNGFjNjIyLi5hYjhiMmM2MGE0NzM5YzZiYzc3NGFhNjk3MmM1NDhkZTlmNGZjNTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEwNCwyNSAr
MTA0LDIzIEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVO
b25lOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7
Ci0gICAgICAgIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwg
dmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwp
LnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKKwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkg
fHwgY2VsbC0+aXNTeW1ib2woKSkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxs
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZl
KGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsK
ICAgICB9CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGUwZGQxNjQ0YTY3M2U4Nzc2ODZjYmM4
ZWQzNWVhYzg1MzYxZDc2MjcuLmU0MTQzMWZkMThkMjk4NGJkODYzMjEyZjIyODc3OGYyODUzYzU2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xNDUsOCArMTQ1
LDggQEAgY2xhc3MgSlNDZWxsIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0OwogICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OwogICAgIGNv
bnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZShWTSYpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgICAgIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDQ2
YmYxY2JiZTk2MjQxNGJiYWY3ODRjZGVmYjMzOWIzZTRhMjhkNWMuLjkwYzY0ZWQ0OWRjZDQwOTUx
N2U0OGZkODI5NDJlMmNlYjUxNWRlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xMTEsMTggKzExMSwxNiBAQCBib29sIEpTRGF0YVZpZXc6
OmdldE93blByb3BlcnR5U2xvdCgKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNEYXRh
Vmlldzo6cHV0KAorYm9vbCBKU0RhdGFWaWV3OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAg
ICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgKLSAgICAgICAgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KSB7Ci0gICAgICAgIHJlamVjdChleGVj
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFkLW9ubHkg
dHlwZWQgYXJyYXkgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAg
IHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZU9mZnNldCkKKyAg
ICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGlu
ZyB0byB3cml0ZSB0byByZWFkLW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7CiAKLSAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCBkNjVmZTI3NWZhYzM0
ZTEwNTllOWY3MjU1YTE4YzU4MDZmZGE0OWZjLi43NzRiNmQxNThmN2M1ZmZmYzkwOTU5YTM0NDBk
ZjdkMWUxYWRkNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1
ZmZlclZpZXcgewogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAppbmRleCA2NTEyZDRmOTlmMWU4MjczYWY3Yzc0MTc4OWY0MjRjNGEzZmQwMGRjLi41NDFm
MDRiMGRlOTE3MTMwZGIyZjdjMzliNzFjYzU3YWRiOWZkNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNDIxLDEzICs0MjEsMTIgQEAgdm9p
ZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLAogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdm9pZCBKU0Z1
bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
SlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7
Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKLSAgICAg
ICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92
ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01B
LTI2MiA4LjEyLjkuCkBAIC00MzcsMjMgKzQzNiwyMSBAQCB2b2lkIEpTRnVuY3Rpb246OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SgogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHBy
b3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIC8vIERvbid0IGFsbG93
IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX3JhcmVEYXRh
LgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNPYmplY3QpOwotICAgICAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENh
Y2hlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgfQogICAgIGlm
ICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKSkgewogICAgICAgICAvLyBUaGlzIHdpbGwg
dHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3QgYWxyZWFk
eSB0aGUgY2FzZSEKICAgICAgICAgYm9vbCBva2F5ID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHko
ZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsK
LSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAgICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0
eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wg
SlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmU5MjEwMTQxODM5YzgxODhmYjQxODMwZDkyNGE3ZWQyOTZk
OGE2Mi4uZTgwMWNhNWIxN2VhZDI0Y2M5MWE0NGNjY2E2YTJmNDE3ZWUwOWRjOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw3IEBA
IGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggODU4OTM5MmFmY2RhMWY1YjAxOTdkYzQ5NTlh
MjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhkMGFmODIzMjBiNTk4YTIyOTdmMWRjYjM4OTczOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIgKzI3NCwxMiBAQCBjbGFzcyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgZnJpZW5kIHN0cnVj
dCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3Rh
dGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGI2YzZhZWQ4ODE0YTlhYjJkY2NkMjBlNjExZTY3
YzRmOWQ5Y2JhOTEuLjQ1MTcwMGZiYzhlMWQ1MzFlMjE5Y2IwOTQ5NzY1ODEyOTkyOGFjZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMDMsMTggKzMwMywxNiBAQAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0
KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtMzY0LDE5ICszNjIsMTggQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiti
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KAogICAgIEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsK
ICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWUodGhpc09iamVjdCksIHNob3VsZFRocm93KTsK
LSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KAotICAgICAgICAgICAgdGhp
c09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1
ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgCiAgICAgdGhpc09iamVj
dC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAK
aW5kZXggNmQxNzYwODZlYWQzOTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZiZDBmNi4uZWZmZWJmYjQ1
MTUxMTMxZmEwNTg1NDU0NTg1YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNw
cApAQCAtMzgsMTMgKzM4LDE1IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZv
aWQgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogICAgIGJvb2wgYWx3YXlzVGhy
b3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5ID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZUNv
bnN0QXNzaWdubWVudEVycm9yID0gc2xvdC5pc0luaXRpYWxpemF0aW9uKCk7Ci0gICAgc3ltYm9s
VGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5LCBpZ25vcmVD
b25zdEFzc2lnbm1lbnRFcnJvcik7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBz
eW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHksIGln
bm9yZUNvbnN0QXNzaWdubWVudEVycm9yLCBwdXRSZXN1bHQpOworICAgIHJldHVybiBwdXRSZXN1
bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggNjQz
ZjA5NWRkMTk3OTllNWFhMzI2MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0ZmQyZTA0NjE1MDBlODJk
Y2NkNjgwYjFhYzE2Y2YxZDZmMDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3ltYm9sVGFibGUoKS0+c2l6
ZSgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggMTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3YTZiNDlmMTkyMTM3ZjRl
Ny4uYTUwNDBjYmZjNGIzNDQ3ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjIwLDE2
ICs2MjAsMTcgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5UHJvZmlsZXIoKSBjb25z
dAogICAgIHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c0xlZ2FjeVBy
b2ZpbGluZyh0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VS
VCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0
aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3Qu
aXNTdHJpY3RNb2RlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IGZhbHNlOwot
ICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJl
YWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJlc3VsdCA9
IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMy4uODNlZTM4
MTNlOGFjOThhMzdhMjJjZWI5NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDEsNyArNDAxLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4OWQ5ZGQ2OTQzOTc3YzEy
Mjg1MjEwNDdkZDVkNzQyZTQuLjgyOTAxYTc5NDRkYmE2NGExMjAxZGYxNTQ5NTZkNGZhNDIzNTQy
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5jcHAKQEAgLTgwLDIxICs4MCwyMiBAQCBib29sIEpTTGV4aWNhbEVudmly
b25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xleGlj
YWxFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29s
IHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCkgfHwgdGhpc09i
amVjdC0+aXNMZXhpY2FsU2NvcGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0g
ZmFsc2U7Ci0gICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yLCBpZ25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29sIHB1
dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBv
aW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAgICAg
IHJldHVybiBwdXRSZXN1bHQ7CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNP
YmplY3QgYmVjYXVzZSBfX3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCiAgICAgLy8gcHJvcGVy
dGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlv
bnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQgb2JqZWN0
LgogICAgIEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsK
LSAgICB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9w
ZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBjNDBhZTg3
Mzk1Y2MzMTIyZDY4MDMxZWMyZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3OWM2MTQ0MDI3ZjNkNjFm
ODYyNmJmMzQwYjhiM2JkYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgSlNM
ZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZjA4ZmUzZDAyYjk5
YzgzM2I1NTE3M2ViNTQwODRjMWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1OTJiMzIxOGQ3MmU3MzRh
YzcxZTllY2RmMThhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHZvaWQgSlNN
b2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBj
ZWxsLCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOwogfQogCi12
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBBbGwg
aW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJ
bXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkp
KTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmlu
ZGV4IGY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMuLjQzNGJiN2MzZjhh
MjFhZWI4ZDllZjU5YzIyYWZlMWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAg
Y2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7
CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwCmluZGV4IDBmZTljMzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJhYTljMzMwOWRiODcuLjQw
ZGRhNzMzM2ZmNzIwYWRmNjA5OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKQEAgLTE1MSwxNyArMTUxLDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgog
ICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCiB7CiAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCAzN2U2NDJlODc0YTQ2ZDEzZjQ2NWUxYTdkN2M3ZGU0
MWNmN2IyN2QxLi44Y2ZlY2ZkMGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4ZjQ3MjY2NzllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH0KIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCmluZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2UyZTAxYmJhN2JiOGE5MTQ3
Zjg0ZmYuLjdiN2IzMjNlOThhOTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4MWQyNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTc4
Niw3ICs3ODYsOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRN
b2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRU
b3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVudHJ5Lmxv
Y2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8g
ZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICAgICAgYm9v
bCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRj
aHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUs
IG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAv
KiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUt
PnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAgICAgICAg
ICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewpAQCAtODE2LDggKzgxNywxMCBAQCB2b2lkIEpT
TW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1v
ZHVsZVByb2dyYW1FeGVjdQogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xh
cmVkVmFyaWFibGVzKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBvZmZzZXQg
PSBlbnRyeS52YXJPZmZzZXQoKTsKLSAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQotICAg
ICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1l
bnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwg
anNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBp
Z25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFj
aygpKSB7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmlu
ZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFk
T25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgpAQCAtODM3LDcgKzg0MCw4IEBAIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9k
dWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+
c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1
dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAg
ICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRU
b3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTm90QW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOb3RBbk9iamVjdC5jcHAKaW5kZXggYWY0NzM3ZTliMDJmNTcxMDMwNjVlZTdkOGU3YmEwNDBk
ZWMwZDJhYy4uY2I1MTVkODQ0MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5YzcyNDY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKQEAgLTU4
LDE0ICs1OCwxNiBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05vdEFuT2Jq
ZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFk
RXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wpCitib29sIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wg
SlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05vdEFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2Jq
ZWN0LmgKaW5kZXggMGMyNmVjOThiNmZiMTdhODFjZWM5NTlmNzFkNWFjYzQ0OGE0NTdlMi4uOWM0
Nzk0M2UyMTFhZGVjYWNjYWY5YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaApAQCAtNjksOCArNjksOCBAQCBjbGFz
cyBKU05vdEFuT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
dm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBmY2IzNTBhNDlkNTBhNjk0YWI0NmUxYWQ0NTY4NWYxNjA3Mjhk
ODFmLi5iODYyMjJiYTkzZDlmMmNiODVmMjIxNjU1ZTE5ZjczM2QyZTFjYzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zNzksMTIgKzM3OSwxMiBA
QCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotdm9pZCBKU09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
cmV0dXJuIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2Jvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDE1ICszOTcsMTUgQEAgdm9p
ZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKHZt
KS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSkgfHwgb2JqID09IHRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVmFs
dWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlzR2V0
dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXMsIGdz
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
KTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZXhlYywgdGhpcywg
Z3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGUpOwogICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIo
KSkgewogICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0
ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgICAgICAg
ICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIq
Pihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTQyMywxNiArNDIzLDEz
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmot
PnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+Y2xhc3NJ
bmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9w
ZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBv
YmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBl
bnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwgb2JqLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgIFByb3h5T2Jq
ZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iaik7Ci0gICAgICAgICAgICBwcm94
eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHJveHktPlByb3h5
T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAg
ICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAg
ICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTQ0MSwxOCArNDM4LDIxIEBAIHZvaWQg
SlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAgIAogICAgIEFTU0VSVCghc3RydWN0dXJlKHZt
KS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSkgfHwgb2JqID09IHRoaXMpOwotICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RN
b2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBpZiAoIXB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgeworICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQor
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwog
ICAgIH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CkBA
IC00NjIsMTUgKzQ2MiwxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgY2FzZSBBTExf
VU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRV
bmRlY2lkZWRGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgICAgIC8vIFJlbG9vcC4K
LSAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKCF2
YWx1ZS5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRJbnQzMkZv
clZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIH0KQEAgLTQ4MiwyMiArNDgwLDIwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAg
ICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbcHJvcGVydHlOYW1lXS5zZXQoZXhlYy0+dm0o
KSwgdGhpc09iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRl
cmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xl
bmd0aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBF
UzogewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIHRoaXNP
YmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CiAgICAgICAgICAg
ICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSA9IHZh
bHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICh2YWx1ZUFzRG91YmxlICE9IHZhbHVlQXNEb3Vi
bGUpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMo
ZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCkBAIC01MDUsNyAr
NTAxLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtwcm9wZXJ0eU5hbWVdID0gdmFsdWVBc0RvdWJsZTsKICAgICAgICAgaWYg
KHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAg
YnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgocHJvcGVydHlOYW1lICsgMSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE5v
bkFycmF5V2l0aEFycmF5U3RvcmFnZToKQEAgLTUyNyw3ICs1MjMsNyBAQCB2b2lkIEpTT2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsCiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAg
ICAgICAgIAogICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKQEAgLTU0Miwy
NiArNTM4LDI4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgCiAgICAgICAgIC8v
IFVwZGF0ZSBsZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yIGFzIG5lY2Vzc2FyeS4KICAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA+PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3Qt
PmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1
dFJlc3VsdDsKICAgICAgICAgICAgIGxlbmd0aCA9IHByb3BlcnR5TmFtZSArIDE7CiAgICAgICAg
ICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+
bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVTbG90KSB7Ci0g
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1f
bnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xv
dC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgdGhpc09i
amVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGVX
aGVuQXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYgdm0sIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSkKQEAgLTEyNDMsNyArMTI0MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20o
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVjKTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpT
T2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXR0ZXIp
OwpAQCAtMTI1NCwxMCArMTI1MiwxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldAogICAgIGlm
ICghKGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVy
YWJsZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0
aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBK
U09iamVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0
OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXR0ZXIpOwpAQCAt
MTI2OCwyNyArMTI2NiwyNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldAogICAgIGlmICghKGF0
dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VS
VCh2YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAot
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHsKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4
LnZhbHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3Qp
OwogCi0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nl
c3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAg
IEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJv
b2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2
bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBBU1NFUlQo
c2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAgLTEyOTYs
MTggKzEyOTIsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9w
ZXJ0aWVzKCk7CiAgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVy
c2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJv
cGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICBi
b29sIHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChhdHRyaWJ1dGVz
ICYgUmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3Bl
cnRpZXMoKTsKIAogICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc1dp
dGhQcm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3Jl
UHJvdG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEhhc1Byb3BlcnR5KE8sIFApIGZy
b20gU2VjdGlvbiA3LjMuMTAgb2YgdGhlIHNwZWMuCkBAIC0xODI3LDcgKzE4MjUsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTVmFsdWUgZwogICAgIHNsb3Quc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdCh0aGlz
LCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSwgb2Zmc2V0
KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikKK2Jvb2wg
SlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJy
YXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIG1hcCA9IG1fYnV0dGVyZmx5LmdldCh0aGlzKS0+YXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwLmdldCgpOwpAQCAtMTgzOCw3ICsxODM2LDcgQEAgdm9pZCBKU09i
amVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVu
dHJ5KiBlbnRyeUluTWEKICAgICAgICAgZWxzZSBpZiAob2xkRGVzY3JpcHRvci5pc0FjY2Vzc29y
RGVzY3JpcHRvcigpKQogICAgICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVzID0gZGVzY3JpcHRvci5h
dHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikgJiB+QWNjZXNzb3I7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpAQCAtMTg2MSwxMSArMTg1OSwxMiBA
QCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNw
YXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwg
bWFwLCBhY2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlw
dG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5SZWFkT25s
eTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBB
U1NFUlQoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpOwogICAgIGVudHJ5SW5NYXAt
PmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGRE
ZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRGVmaW5lZCBpbiBFUzUuMSA4
LjEyLjkKQEAgLTIwMDQsNyArMjAwMyw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFy
c2VJbmRleE1hcCgpCiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsK
IH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZv
clByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBp
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1w
dFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9
IHRoaXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCBy
ZXNwZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBAIC0yMDE2
LDE0ICsyMDE1LDE0IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlmIChzdG9y
YWdlICYmIHN0b3JhZ2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZh
bHVlTWFwOjppdGVyYXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQoaSk7CiAg
ICAgICAgICAgICBpZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91bmQoKSAm
JiAoaXRlci0+dmFsdWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkpIHsKLSAg
ICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5t
X3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgICAgICBw
dXRSZXN1bHQgPSBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3Nw
YXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9iamVjdCog
cHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHByb3h5
LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93
KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMs
IHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjAzNSwxNyArMjAzNCwxNyBAQCBib29sIEpT
T2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4
ZWNTdGF0ZSogZXhlYywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50
ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTVmFs
dWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGUoKTsKICAgICBpZiAocHJvdG90eXBlVmFsdWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gYXNPYmpl
Y3QocHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9y
UHJvdG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJu
IGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJl
c3VsdCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotdm9pZCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6
OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChpbmRleGlu
Z1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NF
UlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMDU5LDE2ICsyMDU4LDE1IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyhFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAg
ICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+PSBNSU5f
U1BBUlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3Rv
cihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAgICAgICB8
fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9y
KGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAgIHx8
IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVY
KTsKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNwYXJzZUFy
cmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAgICAgICBt
YXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJvb2wg
cmVzdWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOwogICAg
ICAgICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAgICBhcnJh
eVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEpOwpAQCAt
MjA3OSwzMSArMjA3NywzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNhc2UgSW50
MzJTaGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAgIGJ1dHRl
cmZseS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2Fz
ZSBEb3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7CiAgICAg
ICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgQVNT
RVJUKHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250aWd1b3Vz
U2hhcGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwgdGhpcywg
dmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0FycmF5LmNw
cC4KLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1
ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1Zh
bHVlKTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5n
dGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiti
b29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogCkBAIC0yMTMwLDEyICsyMTI5LDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAg
ICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9yYWdlLT5t
X3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+
bV9udW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8sIG9yIGNh
bid0IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBhIHNwYXJz
ZSBtYXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4
TWFwKGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZh
bHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1hcC0+
cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKICAg
ICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjE0NSw3ICsyMTQzLDcgQEAg
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25s
eSgpIHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHNob3Vs
ZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAg
ICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjE1NCwxMCArMjE1Miw4IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1c2luZyBh
IG1hcCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4KICAgICAv
LyBXZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMg
c2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxz
LgogICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0Rl
bnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNl
VmVjdG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5wdXRFbnRy
eShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3Rv
cihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVj
LT52bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlz
LCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFnZSBhZnRl
ciBpbmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAg
c3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjE3NSw5ICsyMTcxLDEwIEBAIHZvaWQgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNT
dGF0ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3RvcmFnZS0+
bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2YWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjE4NywyNSArMjE4
NCwyMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAo
aW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBl
eGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlT
dG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2llbnRseUJl
eW9uZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgpIHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlT
dG9yYWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhp
bmcoKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0aGUg
U2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVBcnJheVN0
b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKLSAgICAg
ICAgICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpcywgZXhl
YywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Y3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjIxMywzOCArMjIwNywzMyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBF
UzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2Ug
QUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBF
UzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAgICBjYXNl
IEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGks
IHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAg
ICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBj
YXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8gb3duIHBy
b3BlcnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGluIHRoZSBz
cGFyc2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJheVN0b3Jh
Z2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRh
aW5zKGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZh
bHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgcHV0
UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5zKGkpKSAm
JiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVlLCBzaG91
bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgc2hvdWxk
VGhyb3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxl
bmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9kZSwgQXJy
YXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQxOCwxNSArMjQwNywxNSBAQCBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50
cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRp
ZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBp
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nl
c3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAs
IG5hbWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFjY2Vzc29y
LT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1
cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0
ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpT
T2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBm
dW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBp
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQzNCw3ICsy
NDIzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7CiAKICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7Ci0g
ICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAg
ICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKIH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYg
cHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKQEAgLTI3NDUsMTIgKzI3MzQsMTEgQEAgc3RhdGljIGJvb2wgcHV0
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFt
ZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KQotICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0g
ICAgZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlKTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAyMjYyOGUwOTM1MWUyZTgwMWFiNmVhODdk
ODcwZDY0YWNhZGM2M2IzLi4zNjFmMjZjMGRmNTJlZTU5ODZkZjYwYjdhYzBiNDdmZTRhMTgyZmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1OCwxOCAr
MTU4LDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJbmxpbmUo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
ICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGluZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1l
KSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAgLy8g
VGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0xOTEsNyArMTkx
LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICAvLyBB
IG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGlyZWN0SW5kZXguCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXRE
aXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAgICAg
ICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAgIHsKQEAgLTQ4NCwx
NSArNDg0LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gIC0g
YWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0ZXMgd2lsbCBiZSBy
ZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdpdGggdGhl
IGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5hbWUgaXMgYXNzdW1l
ZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1dERpcmVj
dChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgYm9v
bCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAg
IHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRHZXR0ZXIoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICB2
b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRTZXR0ZXIoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02MTgsOCArNjE4LDgg
QEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHB1dERpcmVjdChW
TSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZv
ck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGly
ZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBw
dXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50
aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVu
Z3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24q
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtNjkwLDcgKzY5
MCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXMgZXF1aXZh
bGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0dXJucyAwIGlmIGlu
dDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVzZQogICAgIC8vIGlu
ZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLCBvciBiZWNh
dXNlCkBAIC04MzYsOCArODM2LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsKIAog
ICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAgIHZvaWQgcHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOworICAgIGJvb2wg
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOwogCiAg
ICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5ld0xlbmd0aCk7CiAg
ICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg0Niw3ICs4NDYsNyBAQCBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAgICB2b2lkIG5vdGlm
eVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAotICAgIGJvb2wgYXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAvLyBDYWxs
IHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQgYW5kIHlvdSdyZSBz
dXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAgLTg5MSw3ICs4OTEs
NyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0RGlyZWN0
SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0YXRl
KiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBORVZF
Ul9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwpAQCAtOTAwLDkgKzkwMCw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpT
Q2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFibGVWYWx1ZSogZmlu
ZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIAotICAgIHZv
aWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSosIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsKKyAgICBi
b29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50cnkqLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7CiAgICAg
ICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJv
b2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGlyZWN0
SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0
SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1
dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2Rl
KTsKICAgICAgICAgCkBAIC0xNDIzLDE5ICsxNDIzLDE5IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRy
aWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0
dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdElu
dGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
RGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBz
bG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZp
bmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAgIHJl
dHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZGIxNzBmMjk4Y2IyNTU5
YzdlMzdhMTJlZTExMDJjMDA5MGM1MDhhMC4uOWQ1MzM0MWExNDgyYzJlOTY2YzMyNDBjMWIzMDJk
ZWUyODBlNjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHIKIH0K
IAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1dElubGlu
ZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNl
bGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1lcyB0
aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sgaW4g
dGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhl
Yywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwg
cHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJu
YWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpCi0gICAgICAg
ICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90
KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0
SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCmlu
ZGV4IDkzN2MwODg3NDVmOGJiN2NmZmJkZjdhZTE5M2M1MmJlNWNmN2I3Y2YuLjYwODM1MjkzNTA5
ZWUwZGUwNzE2OGFiZTdmN2EyZWFjNjQxZWE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBKU1Byb3h5OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTUHJveHk6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcyYWJjZWJhODdmZmIw
NmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2NmFmYjgwYjliYmFl
ZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtNzYsOCAr
NzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVj
dCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVhYzIzNmY3NmFiYWI4
MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRmNTdjOGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1vZGUgewog
dGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlwZW5hbWUg
U3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
U3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywKLSAg
ICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9y
cywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJv
ciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCwgYm9vbCYg
cHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVh
cCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYgKzE3MCw3IEBAIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9u
bHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHB1dFJl
c3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAt
MTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgLy8gdGhl
IHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0
IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNl
dCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9sVGFi
bGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJv
ciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQogewog
ICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1v
ZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJv
cnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1
dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlF
cnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJpYWJsZVdy
aXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmpl
Y3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNl
dCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wgc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAgIGJvb2wg
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29s
JiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxlUHV0
PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxl
UHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQpCiAg
ICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3QsIHBy
b3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0aGlz
IHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0SW52
YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVj
dFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRj
aHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsK
ICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJvb2wgaWdu
b3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQ
dXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQ
dXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAgICAg
ICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCmluZGV4IDFlNzAyMTUxOWI4ZTdlYzFkMjJkODMzOGNjMzhjMjg4MWQzZWZmNzMuLmU5ZjBk
NzFmMTI1ZGY5ZDU0ZDlmODk5NTBkNjIyZGY3NGQyYmY5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjQgKzI4NCwzNCBAQCBpbmxpbmUgYm9vbCBnZXRT
dGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBU
aGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVydHkg
KHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2FzIGNh
bGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJlaW5n
IGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQpLgog
Ly8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2luYWxs
eSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNlbGYp
LgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVW
YWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZVZh
bHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHBy
b3BlcnR5LgogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
IHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHRoaXNWYWx1ZSkpCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQWNjZXNzb3IpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgewogICAgICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgfSBlbHNlIGlmICghKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKICAgICAg
ICAgSlNWYWx1ZSB1cGRhdGVUaGlzVmFsdWUgPSBlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9t
QWNjZXNzb3IgPyBzbG90LnRoaXNWYWx1ZSgpIDogSlNWYWx1ZShiYXNlKTsKICAgICAgICAgZW50
cnktPnByb3BlcnR5UHV0dGVyKCkoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHVwZGF0ZVRoaXNWYWx1
ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOwogICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3Nv
cihiYXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwot
ICAgIH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiAvKioKQEAgLTMwOSwxNCArMzE5LDE0IEBAIGlubGluZSB2b2lk
IHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBK
U09iamVjdCogYmFzCiAgKiBJdCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9yIHRoZSBwcm9wZXJ0
eSB0byBiZSBzZXQuICBJZiBhbiBlbnRyeQogICogaXMgZm91bmQgaXQgc2V0cyB0aGUgdmFsdWUg
YW5kIHJldHVybnMgdHJ1ZSwgZWxzZSBpdCByZXR1cm5zIGZhbHNlLgogICovCi1pbmxpbmUgYm9v
bCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogYmFzZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYg
cHV0UmVzdWx0KQogewogICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IHRhYmxlLmVu
dHJ5KHByb3BlcnR5TmFtZSk7CiAKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBwdXRFbnRyeShleGVjLCBlbnRyeSwgYmFzZSwgYmFzZSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CisgICAgcHV0UmVzdWx0ID0gcHV0RW50cnkoZXhlYywgZW50cnksIGJh
c2UsIGJhc2UsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5k
ZXggZTU5ZDNhYjA2MDllMTQ0YjExNzE5ZDM5MTEwMWYxMTNiMGJkMWI2Zi4uMGUyYzAyYWE1YTc2
ODgxNTc3ZmNmNmQ0YmE3ZTc3YmQzN2ZjOTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtMzQ1LDEyICszNDUsMTIgQEAgYm9vbCBQcm94
eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIHUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0
RnVuY3Rpb24+Ci12b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQpCitib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1E
ZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFt
ZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpCkBAIC0zNTks
NyArMzU5LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBKU1ZhbHVlIGhhbmRsZXJW
YWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7
CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFu
ZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVy
ID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM2NywxMiArMzY3LDEwIEBA
IHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1
dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNW
YWx1ZSBzZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxU
eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcgcHJvcGVydHkg
b2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0TWV0
aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAg
ICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM4MSw2MiAr
Mzc5LDYxIEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgc2V0TWV0aG9k
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3Jp
cHRvcjsKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFE
ZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iu
d3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgZGVzY3JpcHRv
ci52YWx1ZSgpLCBwdXRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZp
Z3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRo
ZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJn
ZXQnLiIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNj
cmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9u
IGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNo
b3VsZCByZXR1cm4gZmFsc2UuIikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgQmFzZTo6
cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5k
ZXJzY29yZVByb3RvKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0g
WyZdICgpIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09iamVjdCo+KHRo
aXNPYmplY3QtPnRhcmdldCgpKTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1
dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1
cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVj
LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1
dCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3Qu
dGhpc1ZhbHVlKCksIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCi12b2lk
IFByb3h5T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0
aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlO
YW1lKTsgCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgp
IHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IHNob3VsZFRocm93OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzVmFsdWUsIGlzU3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0
aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdldC0+bWV0aG9kVGFi
bGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsK
KyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVj
LCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHBlcmZvcm1QdXQo
ZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1
dCk7CisgICAgcmV0dXJuIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRl
bnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBQcm94eU9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIHRoaXNP
YmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29t
bW9uKGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2Fs
bChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuaAppbmRleCBiNjhjYWM0NGJlZDkwODk2OGI2ZGZiMzRlMzkwMDExM2RhZDQxYzQyLi41
NTU5NzhjZjVjODIyZTk1NWE1NzkyZmYyNDhhY2JjY2QyNmM1NTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAgLTYyLDkgKzYyLDkgQEAgY2xhc3Mg
UHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNPYmplY3QqIHRh
cmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1ZSBoYW5kbGVyKCkg
eyByZXR1cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRC
eUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFs
dWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAg
LTkyLDcgKzkyLDcgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbj4KICAgICBi
b29sIHBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRl
RnVuY3Rpb24pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0
aW9uPgotICAgIHZvaWQgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9u
KTsKKyAgICBib29sIHBlcmZvcm1QdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbik7
CiAgICAgYm9vbCBwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CiAgICAgYm9v
bCBwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgcGVyZm9ybURlZmlu
ZU93blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDE5YmYxYzU2ZDMwNzUyNTlhMjQxYThjNTU5
NjRkOGUyMWUzYmUwY2YuLjQ1MDE2OTk1OGY1MWE5OTc1NjQyNmNlNTNhZWY2MTM3ZjVlZGI2MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVu
c2lvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwogCiB9CkBA
IC02Nyw2ICs2OCw3IEBACiAgICAgaXNFeHRlbnNpYmxlICAgICAgICAgICAgIHJlZmxlY3RPYmpl
Y3RJc0V4dGVuc2libGUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIG93bktl
eXMgICAgICAgICAgICAgICAgICByZWZsZWN0T2JqZWN0T3duS2V5cyAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwcmV2ZW50RXh0ZW5zaW9ucyAgICAgICAgcmVmbGVj
dE9iamVjdFByZXZlbnRFeHRlbnNpb25zICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
c2V0ICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RTZXQgICAgICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIHNldFByb3RvdHlwZU9mICAgICAgICAgICBy
ZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
IEBlbmQKICovCkBAIC0xOTcsNiArMTk5LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAorLy8gaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXQKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CisgICAgSlNPYmplY3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0
KHRhcmdldCk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNWYWx1ZSBy
ZWNlaXZlciA9IHRhcmdldDsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDQpCisg
ICAgICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1lbnQoMyk7CisKKyAgICAvLyBEbyBub3QgcmFp
c2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KKyAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHJlY2Vp
dmVyLCBpc1N0cmljdE1vZGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7Cit9CisKIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZWZs
ZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0ZmRhZWI0YTQ5YTljN2Ix
YjUxY2JmNTNkY2NkMDJlNGUwNWEyZDUwLi4zOGM5YjkzNTQ5MWJiYjgwOTlmZjJhYzdhNzIyYjA1
MDAzNTRjYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKQEAgLTE0NywxNiArMTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHJlZ0V4cE9iamVjdFNl
dExhc3RJbmRleE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoCiAg
ICAgYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5k
ZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFsc2UpOwogfQogCi12b2lkIFJlZ0V4
cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdElu
ZGV4KSB7Ci0gICAgICAgIGFzUmVnRXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29sIHJlc3VsdCA9IGFzUmVn
RXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwogICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGFzUmVnRXhwT2JqZWN0KGNlbGwp
LCBzbG90LmlzU3RyaWN0TW9kZSgpCiAgICAgICAgICAgICA/IHJlZ0V4cE9iamVjdFNldExhc3RJ
bmRleFN0cmljdAogICAgICAgICAgICAgOiByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJp
Y3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAg
IEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBy
ZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQogCiBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CmluZGV4IGE2MjZkMjkxMmVhOGVhOGYyNTQzZjUxNzgyNjBlMmY4ZmQ1ZTdiNTcuLmI5NDFlZTkw
ZDUwNTRhNTI5MTJjNTdmZjUwMzAwYmRkNDY4ZTcwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC00MSwyMCArNDEsMjYgQEAgY2xhc3MgUmVn
RXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgc2V0UmVnRXhw
KFZNJiB2bSwgUmVnRXhwKiByKSB7IG1fcmVnRXhwLnNldCh2bSwgdGhpcywgcik7IH0KICAgICBS
ZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwLmdldCgpOyB9CiAKLSAgICB2
b2lkIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCisgICAg
Ym9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAg
IHsKICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihs
YXN0SW5kZXgpKTsKLSAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQor
ICAgICAgICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAg
IG1fbGFzdEluZGV4LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIobGFzdEluZGV4KSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBsYXN0SW5kZXgsIGJv
b2wgc2hvdWxkVGhyb3cpCisgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkobV9sYXN0SW5kZXhJc1dyaXRhYmxlKSkKKyAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJ
bmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgbGFzdEluZGV4KTsKLSAgICAgICAgZWxzZSBpZiAoc2hvdWxkVGhyb3cpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRUaHJv
dykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNW
YWx1ZSBnZXRMYXN0SW5kZXgoKSBjb25zdAogICAgIHsKQEAgLTY1LDcgKzcxLDcgQEAgY2xhc3Mg
UmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTVmFsdWUgZXhl
YyhFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggOWE1ZGE4Mzk1N2Mz
MjRlOGRhZjQwMjVkZjQxNDk1MmQ4NGMwNTczOS4uYzhlMDAzYmY4NTk4MjYxYjkzNjBkN2NiNmI2
MWI4YjdiNzJlYTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RydWN0dXJlKiBT
cGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNwYXJzZUFycmF5VmFs
dWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBTcGFyc2VBcnJheVZh
bHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBBU1NFUlQodmFs
dWUpOwogICAgIApAQCAtMTAyLDEwICsxMDIsMTAgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFw
OjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwK
ICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBlbnRyeS5wdXQoZXhlYywgYXJyYXksIHRoaXMsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgcmV0dXJuIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhpcywgdmFs
dWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQpAQCAt
MTQ2LDIwICsxNDYsMjAgQEAgdm9pZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihC
YXNlOjpnZXQoKSwgYXR0cmlidXRlcyk7CiB9CiAKLXZvaWQgU3BhcnNlQXJyYXlFbnRyeTo6cHV0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAq
IG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgU3BhcnNlQXJyYXlF
bnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5
VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBp
ZiAoIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgc2V0KGV4ZWMtPnZtKCksIG1hcCwgdmFsdWUpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNhbGxTZXR0ZXIoZXhl
YywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9k
ZSA6IE5vdFN0cmljdE1vZGUpOworICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNWYWx1
ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlKTsKIH0KIAogSlNWYWx1ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2Rl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuaAppbmRleCAwNzU0YjUzZDlkNjAxZGYyYWNkN2JjYWYyZTk0YWVmNmQzMzdk
ZmEyLi5mNzFkYzk5NGU4OTRhNzI4M2E1NzJiMzMyNmM5ZTg3NjFiOTIyZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCkBA
IC00NCw3ICs0NCw3IEBAIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFy
cmllcjxVbmtub3duPiB7CiAKICAgICB2b2lkIGdldChKU09iamVjdCosIFByb3BlcnR5U2xvdCYp
IGNvbnN0OwogICAgIHZvaWQgZ2V0KFByb3BlcnR5RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIHZv
aWQgcHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFw
KiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBKU1ZhbHVlIGdldE5vblNwYXJzZU1vZGUoKSBjb25zdDsKIAogICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgU3BhcnNlQXJy
YXlWYWx1ZU1hcCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgbWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAotICAgIHZvaWQgcHV0
RW50cnkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dERpcmVjdChFeGVj
U3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQdXREaXJlY3RJbmRleE1vZGUpOwogICAgIEFkZFJlc3VsdCBhZGQoSlNPYmplY3QqLCB1bnNp
Z25lZCk7CiAgICAgaXRlcmF0b3IgZmluZCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX21hcC5maW5k
KGkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAppbmRleCAwOTg4ZDZkMDY5MDI5ODkwNGVkNTk5YTFkZTg4YzdmM2QwNDU0YTNkLi5jMjg3ZWY4
ZTBlMjZjNjU2ZWFhZGMyZmVlNzM4MDRiYTA2NGM4MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTYwLDI1ICs2MCwyNSBAQCBib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBTdHJpbmdPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAg
ICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBK
U09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXgg
OTBlNmU1Y2NhNDRhYTA2NDc0MzVhMGFhZjdiZDBiM2NmZGYxZGEwOS4uNGY4OTY5NzQzOWM1NjVm
ZjUwNmMzOWNmOWYwZjdiNWZmMTcwZTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgU3RyaW5nT2JqZWN0
IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCmluZGV4IGNhNzkxMzJkNTgzZmQ1ZGQ0Zjk1M2Q4OTFkNmY2MTE3ZmJlZjgwMDgu
LmUzNGZjYTgxY2M4ZGMyNTZjZjNiYzgzZTY5MzNjMzM5NmY5NGM3ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTEwNzcsNyArMTA3Nyw3IEBACiAtIHBhdGg6IGVzNi9S
ZWZsZWN0X1JlZmxlY3QuY29uc3RydWN0X3NldHNfbmV3LnRhcmdldF9tZXRhX3Byb3BlcnR5Lmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9SZWZsZWN0X1JlZmxlY3Quc2V0Lmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5tYXRj
aF0uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVf
cHJvcGVydGllc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5yZXBsYWNlXS5qcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKaW5kZXggNTRhY2I3YjVlYjYyZGE5NWI4NWE1OTg3Nzg2ZTEyYjM2MWU1YThkMy4u
NDY5ZTQxMWIzYjAyZjU1MGM2NGY3NWJhNzI2YjUxZTNhZTNhNGFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246Omdl
dE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBDU1NQcm9w
ZXJ0eUluZm8gcHJvcGVydHlJbmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1l
KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKQEAgLTM0
MSw3ICszNDEsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NT
UHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOwotICAgIHdyYXBwZWQoKS5zZXRQ
cm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7Cisg
ICAgcHV0UmVzdWx0ID0gd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwg
cHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggMjI3MWZkOWFiOWE3Y2FkMGUzYTNiNThj
OWI5MGUzODdmMDgwOTcyOS4uNjJiN2UzZmNiY2ZiOThmYWIyN2U5OTQ4ZmZjMjU4ZGFjYWZmZTc2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAg
IHJldHVybiBkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGluZGV4KSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNiArODUsNyBAQCBib29sIEpTRE9N
U3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5z
ZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSAhZWM7
CiAgICAgcmV0dXJuICFlYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggMTlmY2EyNTA1OWI1NjY5ODFkOGQyOGQ0N2Q1OTM2N2Q2
NGRiZGQ3Mi4uOWNlODgzODVlZWE3Y2ZjYzk5M2IxYjllNzBkMTk4MGM2YzY4MTUzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xMDMs
NyArMTAzLDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKIHsKICAg
ICBBU1NFUlQobV93cmFwcGVkLT5kb2N1bWVudCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxFeGVjKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hw
b2ludFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCB0
b0pTKGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVu
dCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBwdXRSZXN1bHQpOwogfQogCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IDg4ZTJmMWE4YzEyNzI4MDJjNDZhY2M2NjZmMDdkNGRjNmUzOWJmNzIuLjE2YmIw
ZDBhOWFkNGYyZWI1MjNiMzc0YzZlNzhkN2I4NjlmMjk3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTM0MiwzMiArMzQyLDM1
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgcmV0dXJuIGpzRE9NV2luZG93R2V0T3du
UHJvcGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKHRoaXNPYmplY3QsICpmcmFtZSwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCksIHNsb3QpOwogfQogCi12b2lkIEpTRE9NV2luZG93
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNET01X
aW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAo
IXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJy
b3JNZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9u
IiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikKLSAgICAgICAgICAgIGxvb2t1cFB1dChleGVj
LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BIYXNo
VGFibGUsIHNsb3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wcmlu
dEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uKSB7CisgICAg
ICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxvb2t1cFB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1By
b3BIYXNoVGFibGUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1
dFJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0
aGlzT2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0RPTVdpbmRvdzo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCkgfHwgIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3Qs
IGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBCYXNlOjpwdXRC
eUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQog
CiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXgg
OWRmYmI0ZDUzZWZlYmM3ZDMzM2Q5MzRjMTg1NTE1MGUwNjYzOTEzZS4uMjI5ZTY4Mzk5OGUzOTJl
NTE2NzQ4ZTYyNTQ3ZmVmZjk4NGViODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4
LDkgQEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1
c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50LCBCYXNlPihleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxBcHBsZXRF
bGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVz
dWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9t
UHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9
CiAKIENhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2Vs
bCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYTJlOTE4MzEwYjFlZGE0
OWUxN2I1ZDA4MGI4YzQ0OWUxMThmMDFkMi4uOTE5ZjY4NjYyYTExYjU4MmFkYWViMDgyYWZjNTBi
ZDcyNWJhN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RW1iZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNIVE1M
RW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0
eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICByZXR1cm4g
cGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBz
bG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBKU0hUTUxF
bWJlZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA4M2Y5OGY3ZjdjYzNkMTBiNTEzMTA2ZDVjNjI5YzU2NDZk
Y2Y3MTZmLi40YTg2NDdmODllYmM3MDA3MjllYzgzMGNhNmRhYzliOWU4ZTczMWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50
Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6Omdl
dE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAg
IHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTE9iamVj
dEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJv
b2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRD
dXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAgcmV0
dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhp
cywgc2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MT2JqZWN0RWxlbWVudDo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGIzM2FkNGY1
YjExZGYzOTk3ZDQ1MzBlZWM3MjE1NmJmYzUwMTMyODAuLjA5ZWFmMTc1OGVjNjEwY2FiZTkzYTI5
YjY2ZjA1ODUzNzJhZTc3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCkBAIC02MCw4ICs2MCw5IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0
ID0gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NSw3ICs3Niw3IEBAIGJvb2wgSlNM
b2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNMb2Nh
dGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVEb21haW5BY2Nlc3MpCi0gICAgICAg
ICAgICBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgICAgICAgICAgcHV0UmVzdWx0ID0gSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0xMzcsOCArMTM4LDkgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3Jh
cHBlZCgpLnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0gZmFs
c2U7CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRv
U3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IGNkMTgzZjY4YzhiNDhmMmJhNTViODY5ZWI5MDVjZDY2
ZDNiNmIzNjkuLjJhMzRmNWFkYmIzOTdmYzcwZDlmNDM2ZTRlZmRhOTAxNDdiMmIxNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNI
VE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBwbHVnaW5F
bGVtZW50Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9
IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghc2NyaXB0T2JqZWN0LT5oYXNQcm9w
ZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2Ny
aXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBzY3JpcHRPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IGRkYTNkMGM5ZjVmODA1
ZjMxNzA3NTM4YmQ1Yjg4OTU4OWM5ZGQyNTYuLjQxMTY2MWU2ZmFlNWYzOTYyOGNlZmE5YTVlZjdj
MThhY2I2NTI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC00MSw3ICs0MSw3IEBACiAgICAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLAog
ICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBib29sIHBs
dWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAg
Ym9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJv
cGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBKU0M6OkNhbGxUeXBlIHBsdWdpbkVs
ZW1lbnRHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1Z2luRWxlbWVudEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwgVHlwZSogZWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4
IDNhYTdlOTQzOGVjZDE1OWI1YmYwYzliZjVhMmUzNWVkZmNkNzBiNjEuLjlmNTI1NjFiODU4MzIw
NTgwZGNiODNmMWE3YzVmMWFmODIzYTk2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEpTU3RvcmFn
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TgogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgLy8gT25seSBwZXJmb3JtIHRo
ZSBjdXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5
IGJ5IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBj
YWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hl
Y2sKQEAgLTExOSwxMyArMTE5LDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAg
Ly8gaWYgdHJ1ZSwgdGVsbHMgdGhlIGNhbGxlciBub3QgdG8gZXhlY3V0ZSB0aGUgZ2VuZXJpYyBw
dXQpLiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSB3aGV0aGVyCiAgICAgICAgIC8vIHB1dERlbGVnYXRl
KCkgZGlkIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIG9yIG5vdCAod2hpY2gg
aXQgZGlkbid0IGluIHRoaXMKICAgICAgICAgLy8gY2FzZSBkdWUgdG8gdGhlIGV4Y2VwdGlvbiku
CisgICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9w
ZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMjdiNGJkYjk4YmRmMGMyYjU4ZTJiMjIxNTdlZDRmOWFl
OTJmZWVmOS4uZDk1ZTEzZTRiNDQyNzk1YzQ4YjNhZDRjZDRlNDE0MWEyZGJmYzAwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTEwNDEsOSArMTA0MSw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0ZXJz
CiAgICAgaWYgKCRvdmVycmlkZXNQdXQpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9OworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAgICB9CiAKICAgICBpZiAo
ISRoYXNQYXJlbnQpIHsKQEAgLTIxNDQsMTIgKzIxNDQsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm47XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNl
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5w
dXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3Vs
dDtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0yNTU4LDI2ICsy
NTU5LDI3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBpZiAoJGhhc0N1c3Rv
bVNldHRlcikgewogICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21QdXRGdW5jdGlvbiJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNz
TmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9
Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwogICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0
dGVyIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09iamVjdC0+
aW5kZXhTZXR0ZXIoc3RhdGUsIGluZGV4LnZhbHVlKCksIHZhbHVlKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tTmFtZWRTZXR0ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xuIik7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9IHx8ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpO1xuIik7CkBAIC0yNTg1LDE4ICsyNTg3LDE5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0
LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgsIHZhbHVlKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgc2hvdWxk
VGhyb3cpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIp
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxk
VGhyb3cpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhy
b3cpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NjQ5LDggKzQ2NTIsOCBAQCBzdWIgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0
eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJv
b2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29s
JiBwdXRSZXN1bHQpO1xuIik7CiAgICAgfQogCiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVy
dHkgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMjdkNjJjNDhjNGMyOTBhOWE2
NGYyM2E2ZGQxZTBkNTRiOTY4MTEzMS4uZjVhYzBiYTk0M2U5ZjcwYzY5ZTNiNDc1ZWVkZjM2M2Qy
NGU1MWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTYwNiwyMyArNjA2LDI1IEBAIHZv
aWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFCiAgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9p
ZCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAgICAgcmV0dXJuOworICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OwogICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitib29sIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IHNob3VsZFRocm93KTsKLSAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKQotICAgICAgICByZXR1cm47CisgICAgYm9vbCBwdXRS
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRS
ZXN1bHQ7CiAgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAppbmRleCBlYTZjZWM2MmQ1ZmZlNWY0
YmMwMTg2MDExNDNmYzU0OGRhMDA1MGRjLi4yNGM5MDhmMDM0MWJlNGY1MWQ0M2Q1MmUxMTJkYmVj
YjM0MmUzZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdElu
dGVyZmFjZT4gewogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Z2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IFRlc3RJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgYm9vbCBwdXREZWxlZ2F0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29s
JiBwdXRSZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAog
ICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
cnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCmluZGV4
IGIyMzJiMDY1ZTk0MjZhNDY3MDgxNmQ1ZmIwOWFhMGU2NzY4YTU3ZGMuLjNlZmE3MTQyMTkxZTI2
OTQ0YzE4YzUzNTVhMGNiMTNlOTFhZjZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50
aW1lLmNwcApAQCAtNjEsNyArNjEsNyBAQCBKU1ZhbHVlIENGaWVsZDo6dmFsdWVGcm9tSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdCkgY29uc3QKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkgY29u
c3QKK2Jvb2wgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25z
dCBJbnN0YW5jZSAqaW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgQ0lu
c3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3QpOwog
ICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CkBAIC02OSwxNCArNjks
MTcgQEAgdm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGEKICAgICAgICAgTlBWYXJpYW50IHZhcmlhbnQ7
CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIGFWYWx1ZSwgJnZhcmlhbnQp
OwogCisgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAg
IEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKLSAgICAgICAgICAgIG9i
ai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50aWZpZXIsICZ2YXJpYW50KTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG9iai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVs
ZElkZW50aWZpZXIsICZ2YXJpYW50KTsKICAgICAgICAgICAgIENJbnN0YW5jZTo6bW92ZUdsb2Jh
bEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgICAgICB9CiAKICAgICAgICAgX05QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50
aW1lLmgKaW5kZXggMTIwMTMxNmUxMTBhNGM4YTc0NjM5NTZlOTQzMjg5NGQxNmJkMDJhZi4uYmNh
MDYyMTRlNmZmNTkyNjZiZDFlYmQxYzJhODkyMzgzZTQ3MWMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19ydW50aW1lLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQ0ZpZWxkIDogcHVibGljIEZp
ZWxkIHsKICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZpZXIo
aWRlbnQpIHsgfQogCiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IE5QSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gX2ZpZWxkSWRlbnRpZmll
cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCAwMDI5NGZhZGQw
NThhZDhkMDNkZjdhYjBjYzUyNGRmYjVkZjIyNmIyLi41ZmU4NWY1ZjRjMTNkYjhmMWI3YmZjNWYw
NzVjMGI5YTVkYzlkZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAg
LTUyLDcgKzUyLDcgQEAKIGNsYXNzIEZpZWxkIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFs
dWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFs
dWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Qg
PSAwOwogCiAgICAgdmlydHVhbCB+RmllbGQoKSB7IH0KIH07CkBAIC0xMDUsNyArMTA1LDcgQEAg
Y2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0YW5jZT4gewogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgfkluc3RhbmNlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEJlZ2luKCkgeyB9CkBAIC0xMjQsNyArMTI0
LDcgQEAgY2xhc3MgQXJyYXkgewogICAgIGV4cGxpY2l0IEFycmF5KFJlZlB0cjxSb290T2JqZWN0
PiYmKTsKICAgICB2aXJ0dWFsIH5BcnJheSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc2V0VmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIGluZGV4KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVu
Z3RoKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oCmluZGV4IDc2ODk2NmI0ODk4YTE0YjdjM2U3MGU5ZjkwNTRjZWExOGQ5ZjY2MGYuLmI1OGQx
YjYyOWY0ODEwNDE1N2E2Mjg5MWIyMmU5ZTA1MDJmYWFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE9iamNGaWVs
ZCA6IHB1YmxpYyBGaWVsZCB7CiAgICAgT2JqY0ZpZWxkKENGU3RyaW5nUmVmIG5hbWUpOwogICAg
IAogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNW
YWx1ZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSXZhclN0cnVjdFB0ciBfaXZhcjsKQEAgLTc4
LDggKzc4LDggQEAgY2xhc3MgT2JqY0FycmF5IDogcHVibGljIEFycmF5IHsKIHB1YmxpYzoKICAg
ICBPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4mJik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChFeGVjU3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludCBp
bmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0
KEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2V0VmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUg
YVZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExl
bmd0aCgpIGNvbnN0OwogICAgIAogICAgIE9iamVjdFN0cnVjdFB0ciBnZXRPYmpjQXJyYXkoKSBj
b25zdCB7IHJldHVybiBfYXJyYXkuZ2V0KCk7IH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFzcyBP
YmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAg
IE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJ
bnN0YW5jZSosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbQppbmRleCBmZWMxMDk4ZWRkZDM2YTNjMmQ3NTJkNTQ5MWRlY2EyMzVjYTAy
MWY3Li4wMGVkYjk2MjUzNThmOTIzNDI1ZDQ1NmI1ODg2YTJmNzNjZWQ2YjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAg
c3RhdGljIGlkIGNvbnZlcnRWYWx1ZVRvT2JqY09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiAgICAgcmV0dXJuIFt3ZWJTY3JpcHRPYmplY3RDbGFzcygpIF9jb252ZXJ0VmFs
dWVUb09iamNWYWx1ZTp2YWx1ZSBvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9v
dE9iamVjdDpyb290T2JqZWN0LmdldCgpXTsKIH0KIAotdm9pZCBPYmpjRmllbGQ6OnNldFZhbHVl
VG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNW
YWx1ZSBhVmFsdWUpIGNvbnN0Citib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIGFWYWx1ZSkg
Y29uc3QKIHsKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0lu
c3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0
VmFsdWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVlKTsKQEAgLTEzOCw5ICsxMzgsMTEgQEAgdm9p
ZCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElu
c3RhbmNlKiBpbnN0YW5jZSwgSlMKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogICAgICAgICAgICAgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3Rh
dGUoZXhlYyk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2go
TlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwogICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25d
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtMTUyLDE2ICsxNTQsMTYg
QEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyIGEsIFJlZlB0cjxSb290T2Jq
ZWN0PiYmIHJvb3RPYmplY3QpCiB7CiB9CiAKLXZvaWQgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QK
K2Jvb2wgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50
IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIVtfYXJyYXkuZ2V0KCkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNlcnRPYmplY3Q6YXRJbmRleDopXSkgewog
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiQXJyYXkgaXMgbm90IG11dGFibGUuIikpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNv
dW50XSkgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICAvLyBBbHdheXMg
dHJ5IHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGFuIE9iakMgb2JqZWN0LCBzbyBpdCBjYW4gYmUg
cGxhY2VkIGluIHRoZQpAQCAtMTcwLDggKzE3MiwxMCBAQCB2b2lkIE9iamNBcnJheTo6c2V0VmFs
dWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUp
CiAKICAgICBAdHJ5IHsKICAgICAgICAgW19hcnJheS5nZXQoKSBpbnNlcnRPYmplY3Q6b1ZhbHVl
Lm9iamVjdFZhbHVlIGF0SW5kZXg6aW5kZXhdOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiT2JqZWN0aXZlLUMgZXhj
ZXB0aW9uLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtMjIxLDgg
KzIyNSw5IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCiB7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBlZjk5
MjQ4Mjc4NmY3MjVkNzBlZTFlZGMzZTA3MGNmNmI3ZjhjYzVlLi5jNWIzYzRmN2U3YTIxNzkyNzEy
MWIzYzdlN2MwZjFhNDk2NzFiNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCkBAIC0xMTEsMzEgKzExMSwyOSBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsCiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCBzbG90KTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBl
cnJvciIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKLSAgICAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRW
YWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQorICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5z
ZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAKLSAgICBKU09iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wp
Citib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCiB7CiAgICAgUnVudGlt
ZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlm
IChpbmRleCA+PSB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewogICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9y
IikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGlu
ZGV4LCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+
c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCiBib29sIFJ1bnRpbWVBcnJheTo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNThiYTA1OTZlNjQ5MWE4NDQ2MmJkYzZl
ZWQ4NjRjNTlhMjU5MmVjMS4uMDE4YzEzMjc4ZGJhM2RkMDMxNzFlNTNlZmMwYWQ3ZGYwZTEwN2U5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC01Niw4ICs1Niw4IEBA
IGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCA3MzY2ZjkyNWVjNzFjYjM2MTAyMDg0
YmMxMTQ0NmU5Njg4ZTNiMjI4Li5lNDMzMWZmMjZjODc4NmNhZGJhNDA5YTlmYWNkYjY4ODFjY2Ji
OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTE2MSwy
NSArMTYxLDI3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIGluc3RhbmNl
LT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotdm9pZCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmplY3QtPm1faW5zdGFuY2U7CiAgICAgaW5zdGFu
Y2UtPmJlZ2luKCk7CiAKICAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KKyAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIEZpZWxkICphRmllbGQgPSBpbnN0YW5jZS0+Z2V0
Q2xhc3MoKS0+ZmllbGROYW1lZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlLmdldCgpKTsKICAgICBp
ZiAoYUZpZWxkKQotICAgICAgICBhRmllbGQtPnNldFZhbHVlVG9JbnN0YW5jZShleGVjLCBpbnN0
YW5jZS5nZXQoKSwgdmFsdWUpOworICAgICAgICByZXN1bHQgPSBhRmllbGQtPnNldFZhbHVlVG9J
bnN0YW5jZShleGVjLCBpbnN0YW5jZS5nZXQoKSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKCFpbnN0
YW5jZS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUp
KQotICAgICAgICBpbnN0YW5jZS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgICAgICByZXN1bHQgPSBpbnN0YW5jZS0+cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgaW5zdGFuY2UtPmVuZCgp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAppbmRleCBiM2I2NDBhY2M1NGYzNDhkYzVhZmU5MmM1ZjM4ZmU2
MjI5NDg1ZjgxLi44MWQ0ZWJkM2I0ZGJiNzA5OTExNWRhMTAyODJiMjlmYmZmYjE4NmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBSdW50aW1lT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1
ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwog
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5o
IGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4
IDEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQzZDkzYWY2M2I2MDIuLmFmYmExMDIwZDk1ZGFl
YjYzZTE3YzdmYjkzMjE0MWFlOGU5NGQ4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUHJv
eHlJbnN0YW5jZSA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZSB7CiAgICAgSlNDOjpC
aW5kaW5nczo6RmllbGQqIGZpZWxkTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiAgICAgSlND
OjpKU1ZhbHVlIGZpZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdz
OjpGaWVsZCopIGNvbnN0OwotICAgIHZvaWQgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKKyAgICBi
b29sIHNldEZpZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpG
aWVsZCosIEpTQzo6SlNWYWx1ZSkgY29uc3Q7CiAgICAgCiAKICAgICBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkqIGluc3RhbmNlUHJveHkoKSB7IHJldHVybiBtX2luc3RhbmNlUHJveHk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
CmluZGV4IDljZDBmYmMxYjRjMjU0ZGE1NGM0MTQ2ZWRlMjA1OGQ3Y2MwYWRjMzIuLjY3MTRlOGNm
NGFiMjc1MzYwZGQ2YTA5OTE0NmM1NGQzMDc1YWFiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNl
KEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29u
c3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsKICAgICAKICAgICB1aW50NjRfdCBtX3NlcnZl
cklkZW50aWZpZXI7CiB9OwpAQCAtOTEsOSArOTEsOSBAQCBKU1ZhbHVlIFByb3h5RmllbGQ6OnZh
bHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNl
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2Up
LT5maWVsZFZhbHVlKGV4ZWMsIHRoaXMpOwogfQogICAgIAotdm9pZCBQcm94eUZpZWxkOjpzZXRW
YWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2Us
IEpTVmFsdWUgdmFsdWUpIGNvbnN0Citib29sIFByb3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSB2YWx1
ZSkgY29uc3QKIHsKLSAgICBzdGF0aWNfY2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFu
Y2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMsIHRoaXMsIHZhbHVlKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgUHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+c2V0RmllbGRWYWx1ZShleGVj
LCB0aGlzLCB2YWx1ZSk7CiB9CiAKIGNsYXNzIFByb3h5TWV0aG9kIDogcHVibGljIEpTQzo6Qmlu
ZGluZ3M6Ok1ldGhvZCB7CkBAIC00MTYsMTAgKzQxNiwxMCBAQCBKU0M6OkpTVmFsdWUgUHJveHlJ
bnN0YW5jZTo6ZmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCkg
Y29ucwogICAgIHJldHVybiBtX2luc3RhbmNlUHJveHktPmRlbWFyc2hhbFZhbHVlKGV4ZWMsIChj
aGFyKilDRkRhdGFHZXRCeXRlUHRyKHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSksIENGRGF0YUdldExl
bmd0aChyZXBseS0+bV9yZXN1bHQuZ2V0KCkpKTsKIH0KICAgICAKLXZvaWQgUHJveHlJbnN0YW5j
ZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCwgSlNW
YWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsK
ICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgdWludDY0X3Qgc2VydmVySWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PGNvbnN0IFByb3h5RmllbGQqPihmaWVsZCktPnNlcnZlcklkZW50aWZpZXIoKTsKICAgICB1
aW50MzJfdCByZXF1ZXN0SUQgPSBtX2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKQEAg
LTQzNCwxMCArNDM0LDExIEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2CiAgICAgaWYgKG1faW5z
dGFuY2VQcm94eSkKICAgICAgICAgbV9pbnN0YW5jZVByb3h5LT5yZWxlYXNlTG9jYWxPYmplY3Qo
dmFsdWUpOwogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHdhaXRGb3JSZXBseTxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVxdWVzdElEKTsKICAgICBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQcm94eUluc3RhbmNlOjppbnZhbGlkYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmNwcAppbmRleCA1Mzc3ZjkxZTQyZjVkZTQ3YjhmMDE3MjhkZGRiM2Q3NjAx
MGM3OTI0Li4wMWE0NjA1MTlhOGM4YzQxZTAyM2MyZDljMTgyOWQ2NDdjNjE5NDMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCkBAIC0yOTcsMjcgKzI5NywyNyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmpl
Y3QpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIE5QSWRlbnRpZmllciBu
cElkZW50aWZpZXIgPSBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwog
ICAgIC8vIElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbnBJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkgfHwgIXRoaXNP
YmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9i
amVjdCwgbnBJZGVudGlmaWVyKSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHRocm93
IGFuIGV4Y2VwdGlvbiBoZXJlPwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0
UHJvcGVydHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
TlBWYXJpYW50IHZhcmlhbnQ7CiAgICAgdGhpc09iamVjdC0+bV9vYmplY3RNYXAtPmNvbnZlcnRK
U1ZhbHVlVG9OUFZhcmlhbnQoZXhlYywgdmFsdWUsIHZhcmlhbnQpOwpAQCAtMzI3LDkgKzMyNywx
MCBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgogICAgIC8vIHRoZSBjYWxsIGhhcyBmaW5pc2hl
ZC4KICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OlBsdWdpblByb3RlY3RvciBwcm90ZWN0b3IodGhp
c09iamVjdC0+bV9vYmplY3RNYXApOwogCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICB7
CiAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jh
c2U6OmNvbW1vblZNKCkpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3Mt
PnNldFByb3BlcnR5KHRoaXNPYmplY3QtPm1fbnBPYmplY3QsIG5wSWRlbnRpZmllciwgJnZhcmlh
bnQpOworICAgICAgICByZXN1bHQgPSB0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNl
dFByb3BlcnR5KHRoaXNPYmplY3QtPm1fbnBPYmplY3QsIG5wSWRlbnRpZmllciwgJnZhcmlhbnQp
OwogCiAgICAgICAgIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhl
Y1N0YXRlKGV4ZWMpOwogCkBAIC0zMzcsNiArMzM4LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEoKICAgICB9CiAKICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUoJnZhcmlhbnQpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaAppbmRleCBhNmJiZjdjODdjNGM5OGE0NmNlNTllY2VmYjM2NjBlMDdlYWIyNGU2Li44
YmFmZWIwNjBhMjEwNjZkOGVhYTYwODc0YzAzYWM5OWYwY2Y0YmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgK
QEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273021</attachid>
            <date>2016-03-04 12:03:08 -0800</date>
            <delta_ts>2016-03-05 09:49:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160305050252.patch</filename>
            <type>text/plain</type>
            <size>190014</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzBhZjkyN2Y4NjVmYzQxZDBkZjY5NTQwMTIyM2EyODQwYmY3OGZlLi5kMGFkYzU2MmFkNjk1ZmY4
NDJjNzk0OTVkMGZiNjNlNTE2ZjA2MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTYtMDMtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNl
dHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpwdXQpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRJbmxpbmUpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnB1dCk6
CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1
dCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRC
eUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFNldHRlcik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
ZGV4ZWREZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRy
aW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleCk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChK
U0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6c3lt
Ym9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6
bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24pOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6c2V0
TGFzdEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgor
ICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeSk6CisgICAgICAgIChK
U0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6
cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAg
KiB0ZXN0cy9lczYueWFtbDoKKwogMjAxNi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIExvY2F0aW9uLnJlbG9hZCBzaG91bGQgbm90IGJlIHdyaXRhYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMDJhMTQ5OWE0NzI5NTg5ODVmOWMyZTQ1ZGIwYzAxNDNjNDEzM2RiYi4u
NGIyMWIyNWQ1Y2I0YmM2NTM2NmNhYTZkOTA2ZjYzNmU1NGQyOTdmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU5IEBACisyMDE2LTAzLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OnB1
dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0
QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNM
b2NhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvblByb3Rv
dHlwZTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYnJpZGdl
L2MvY19ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNGaWVsZDo6c2V0VmFs
dWVUb0luc3RhbmNlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3J1bnRpbWUuaDoKKyAgICAgICAg
KiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFu
Y2U6OnB1dCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0FycmF5OjpzZXRWYWx1ZUF0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxs
YmFja09iamVjdEltcDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6
CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6UnVudGlt
ZUFycmF5OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVj
dC5oOgorCiAyMDE2LTAzLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdXNlIG9mIGRlcHJlY2F0ZWQgc3FsaXRlM19leHBpcmVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNjI3ZTdmNGQ5YTY3OGMxOGFjNjgwZmRkMTFkMDc4MzkzZWY3NTMzZC4uNWEx
MzM4YTMwNjUxZTcxZmE2NDhmNGU4NzQ3NDBkMjA5ODZmNjc2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKToK
KyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZSk6CisKIDIwMTYt
MDItMjkgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgdGhl
IG5ldyB2ZXJzaW9uIG9mIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIncyBzaG93TWVudUZv
clJlY3QgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkMjE0NzM0OGE1M2QyMzhjMTYyYmRlNmI2ZWZi
ZTkxODVkYTEzZGIuLjRlNDFmNjdiOTQwNzRmOGRkNDQ2MzdiMTM3MGUwMzU4NzVmODk3NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMy0wNCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5z
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0Lmg6CisKIDIwMTYtMDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgTlNVUkxTZXNzaW9uIGZvciBsb2FkaW5n
IGluIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKaW5kZXggYWRkZDIxOTg2MzM5ZTNjMWQwYjFlNDBjZTJiYWU3ZjdjZGI3Zjc2ZC4uZTk1NjNm
NTRjZWE4YjI2M2IxNDMzNTY3MjFkNGNkZGQ3OWM1ZTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE4MSw4ICsxODEsOCBAQCBjbGFzcyBK
U0NhbGxiYWNrT2JqZWN0IDogcHVibGljIFBhcmVudCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNmUwYTZjZWI0
YmViNzk3ZWFmZDE2Nzk4OGVjNGQ4YTc1ZDQzMTU5OC4uYzFhNmQ3NDk2ZjU2NzdmY2I0YzNkOTU4
NzczZTVhZDVjNTdjMzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTIyMiw3ICsyMjIsNyBAQAogfQogCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAg
LTI0NCwxMyArMjQ0LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChPcGFx
dWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1ZhbHVlcyA9IGpzQ2xhc3MtPnN0YXRp
Y1ZhbHVlcyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBl
bnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2Fs
bGJhY2sgc2V0UHJvcGVydHkgPSBlbnRyeS0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcmVzdWx0OwpAQCAtMjYxLDcgKzI2MSw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpAQCAtMjcyLDkgKzI3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChQYXJl
bnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdl
dFNsb3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5KU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dERpcmVjdChleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUp
OyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTI4NCw3ICsyODMsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxs
KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0zMDYsMTMgKzMwNSwx
MyBAQAogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChP
cGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1ZhbHVlcyA9IGpzQ2xhc3MtPnN0
YXRpY1ZhbHVlcyhleGVjKSkgewogICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVu
dHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQocHJvcGVydHlOYW1lLmltcGwoKSkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxi
YWNrIHNldFByb3BlcnR5ID0gZW50cnktPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQ7CkBAIC0zMjMsNyArMzIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMxLDcgKzMzMCw3IEBACiAgICAgICAgIGlmIChP
cGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xh
c3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgaWYgKFN0YXRpY0Z1bmN0
aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlOYW1lLmltcGwo
KSkpIHsKICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IGMzZWZiZDU2ZGQ3MGRlYWNhMzYzMzkyNGE5MjI5ZDM2
MTM5MzIwMTUuLjM2NTAyNGU4OGYyNmFlMTQ2YTllOGJhNGNjMmY0Y2JkNWEzNTRhYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAg
LTk4LDE1ICs5OCwxNSBAQCBib29sIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganND
YXN0PERlYnVnZ2VyU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7
CiAgICAgaWYgKCFzY29wZS0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0
U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7CiAgICAgc2xvdC5zZXRUaGlzVmFsdWUoSlNWYWx1ZSh0
aGlzT2JqZWN0KSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRleCBm
ZWY2MGM4OTlmN2YxNDgzZTMyY2M3YTgzODMzZTBhZjk0MDQ3MmRiLi5lMzRmNDk3ZDdmYjMzM2Fh
ZWU3NjA5MjQzODY0ZjM1YzBhNzhhNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRGVidWdnZXJT
Y29wZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05h
bWUoY29uc3QgSlNPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IGM0NWJiZWMxMjliNmI3YjgwNTNmZGEwNWU1YWIwNmI4YWY4N2VjMDcu
LmRkZTQ5ZjA4OTdiOGM4MzIzMzg1ZWY2OGYxOTcwZGNkYTBjNzNkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpT
QXJyYXkgewogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKKyAgICBzdGF0aWMgTk9fUkVUVVJO
X0RVRV9UT19DUkFTSCBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgKaW5kZXggMjJiYzQzZDliOTgyN2NiOWYxZDAyNzZmNzA5ZjdlYTZjMjEwMzcyNy4u
ZDM3NmI2MzE5YTk1NDA5Y2VjNjliODUzMTFjZmJlMDU5Mzg0ZTQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBzdHJ1Y3Qg
TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgQ29uc3RydWN0VHlwZSAoKkdldENvbnN0cnVjdERh
dGFGdW5jdGlvblB0cikoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIEdldENvbnN0cnVj
dERhdGFGdW5jdGlvblB0ciBnZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgdHlwZWRlZiB2b2lkICgq
UHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1
dEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBQdXRGdW5jdGlvblB0ciBwdXQ7
CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CisgICAgdHlwZWRlZiBib29sICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4OwogCiAgICAgdHlwZWRl
ZiBib29sICgqRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwCmluZGV4IDgyNDFkNmUwYzA3NTY0NDcxYzVhOWRhNTJlMTZkMWJhNzNi
ZWY5OTUuLjQ4MWYxNmIzZTllZWFmYmM1M2U3ZDUxODRlYzQ1NDQ3MWFkMmIxMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAt
MTY4LDcgKzE2OCw3IEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CiB9CiAKLXZvaWQg
Q2xvbmVkQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50
cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNzgsMTEgKzE3OCwxMCBA
QCB2b2lkIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVgogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6
ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkdW1t
eSA9IHNsb3Q7IC8vIFNoYWRvdyB0aGUgZ2l2ZW4gUHV0UHJvcGVydHlTbG90IHRvIHByZXZlbnQg
Y2FjaGluZy4KLSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1
ZSwgZHVtbXkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7CiAgICAgfQogICAgIAotICAgIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAog
Ym9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCmluZGV4IDhlNzEzZDVjNmZhNWNhMTg0MTM0YjA1
MmIyZDU4OTlhMjY3N2EzMGUuLjVkMjIyMTgzYzllNzA4MzI5NGIxNDE3NmRhNGVmNTYxOTdjYmIz
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIENsb25lZEFyZ3VtZW50cyA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
CmluZGV4IDY3ZjFiMDM0NWQ3MWI4ZDMzNjJmNjZiYjY1ZTJkY2YzYTM1ZDJhYTQuLmVkY2M2ZjFi
OThkNmRhZGY4ODk3ZThhZjJmZjAyMjQ0NTI5YjNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xh
c3MgR2VuZXJpY0FyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0g
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3
YzNlM2UyNDZkZWUuLmQyZWIzNzExNTIxMjY0NWMzMTZmNzlkNDJlMjNiNzgwZmRkYmVkZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50c0lubGluZXMuaApAQCAtOTcsNyArOTcsNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlPgotdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDgsMjggKzEwOCwy
NyBAQAogICAgICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAg
ICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hl
YWJsZSwgc28gd2Ugc2hhZG93IHRoZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgotICAgICAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudCwgdmFsdWUsIGR1bW15KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3Qt
PmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2Jq
ZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPgotdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlm
ICh0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgpKSB7CiAgICAgICAgIHRo
aXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6
OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyY2Q2
NmU1Y2Q0MmZkMDFkYjUyZGUwZDc2YmNmNGQyMTkxZWY3Y2I5Li44NzMwNzk0YTM0MjhmNmQ1ZWE4
ZTlhMmI4Y2JhMjE0YzE3YmM4NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBKU1ZhbHVlIGNhbGxHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQog
ICAgIHJldHVybiBjYWxsKGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBB
cmdMaXN0KCkpOwogfQogCi12b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21h
TW9kZSkKK2Jvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+
KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwo
KSkgewogICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpT
T2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwpAQCAtMTAzLDYgKzEw
Myw3IEBAIHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5oCmluZGV4IGNkMjA0MDI4ZWY5Y2FlMjlmODIxNGZjNmJmYWYzYWViNTU2ZjNmOTEuLjJi
MjJiM2UwYjBjMDBjOTI3YmY1Y2JkOTAwNDljZmU5MThlNTE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5s
aW5lIEdldHRlclNldHRlciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKIH0KIAogSlNW
YWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJT
ZXR0ZXIpOwotSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKK0pT
X0VYUE9SVF9QUklWQVRFIGJvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4
IGFmZGJlMGRlNzZlZDc5YTJjNzM0M2RhN2Y3MWIwNmE3ZWJlZDFhNGYuLjI2MzMyMzM0Y2M2MjRh
ZGJmODMyNDVmNWIzZmJjYWI3MmIzNTkwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUKIH0KIAogLy8gRUNNQSAxNS40LjUuMQotdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CiAKQEAgLTE5OCwxMyArMTk4LDEyIEBAIHZvaWQgSlNB
cnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhCiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUlu
dDMyKGV4ZWMpOwogICAgICAgICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0gc3RhdGljX2Nh
c3Q8ZG91YmxlPihuZXdMZW5ndGgpKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCIpKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMs
IG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNT
dHJpY3RNb2RlKCkpOwogICAgIH0KIAotICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wg
SlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC02NDQsNyArNjQzLDggQEAgdm9pZCBKU0FycmF5
OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgCiAgICAgY2Fz
ZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIHVuc2lnbmVkIG9sZExl
bmd0aCA9IGxlbmd0aCgpOwotICAgICAgICBpZiAoYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZShleGVjLCBvbGRMZW5ndGgsIHZhbHVlLCB0cnVlKSkgeworICAgICAgICBib29sIHB1
dFJlc3VsdCA9IGZhbHNlOworICAgICAgICBpZiAoYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZShleGVjLCBvbGRMZW5ndGgsIHZhbHVlLCB0cnVlLCBwdXRSZXN1bHQpKSB7CiAgICAg
ICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIG9sZExlbmd0aCA8IDB4RkZGRkZG
RkZ1KQogICAgICAgICAgICAgICAgIHNldExlbmd0aChleGVjLCBvbGRMZW5ndGggKyAxLCB0cnVl
KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAppbmRleCA0NWI1NThiMjAwOTgxMThmOWUzZTE2MjA4OTQ3ZmNlNjc2Yjk5ZWI1Li4zYTk0
ZTM0NWIzNjA2ZmQyNDcxM2Y5ZjFmMzllNDg2YzBjYTY2YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgSlNBcnJheSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXIuY3BwCmluZGV4IDM1OWFlNDdhNTBiZTdlYzI4MDI4NzBjOTY3NzQ4NDY0MzBl
MzQ0YjEuLjZkZGU0YzdkZmZjYTMyMzMwMGM3ODU3ODdhNTI3NjBhYWM1MDZjZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCkBAIC03OSwx
OCArNzksMTYgQEAgYm9vbCBKU0FycmF5QnVmZmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAg
cmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTQXJyYXlCdWZmZXI6OnB1dCgKK2Jvb2wgSlNBcnJh
eUJ1ZmZlcjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlC
dWZmZXIqPihjZWxsKTsKICAgICAKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlTGVuZ3RoKSB7Ci0gICAgICAgIHJlamVjdChleGVjLCBzbG90LmlzU3Ry
aWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byBhIHJlYWQtb25seSBhcnJheSBidWZm
ZXIgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0
byBhIHJlYWQtb25seSBhcnJheSBidWZmZXIgcHJvcGVydHkuIik7CiAgICAgCi0gICAgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKIGJvb2wgSlNBcnJheUJ1ZmZlcjo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggZDYzNGQ3MzYz
ZmU0YTUwOGI4YWI5ODBjZmIwNjVmMzExYTdhYTZlOC4uZjc2NzUzODM3ODQ0ZjBhNmZiNWFjN2M0
OWNhMjlhMzQ1MzQzNzkxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXIuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggM2JmY2FmMTUyMTk5
MjViOTNlZDc4N2Y0MTUwMWM5Yjc3YmI1NWIxMS4uZDRiNWNjMGM0MzZiNTgxYmViMTY5NDhjYTcz
MmYwMDYxZjYyMWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMTY0LDE3ICsxNjQsMTUgQEAgdm9pZCBKU0FycmF5
QnVmZmVyVmlldzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAK
LXZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKK2Jvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OnB1
dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPihjZWxsKTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5idWZmZXIpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJB
dHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5idWZmZXIpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5p
c1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFy
cmF5IHByb3BlcnR5LiIpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlC
dWZmZXJWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDUyM2EyMDBmYmEyZDc3MmMyYjcz
ZjJkNGM1ZmM2NWM3MTJmNmI5YmYuLmIyY2Y1YTJiMTk5OWU1ZDdlYTJlOGE0ODc1ZWJlNDczOGUw
ODhiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCmluZGV4IGI5ZGQwYTQxN2Q4MDNiMGU0NWRhZWNlMjg4NDQ1ZWUxMmRmNTc4MzYuLmQzYzgy
ZmE2YjY4MjExY2Y5NmQyZmFkZThiYTFkNzEwMzM3MWJlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0xMjksMTQgKzEyOSwxMiBAQCBKU09i
amVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB9CiAKIC8vIEVDTUEgOC43LjIKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Ci0g
ICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwg
c2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAg
ICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55
IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgSlNPYmplY3Qq
IG9iaiA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CkBAIC0xNDcsNyArMTQ1LDcgQEAgdm9p
ZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTU5LDE4ICsx
NTcsMTYgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGly
ZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0
ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3Ms
IHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUp
OwogCiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewogICAgICAg
ICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21B
Y2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9uIHRoZSBvYmpl
Y3Qgb3Igb25lIG9mIGl0cyAKQEAgLTE4NSwyMiArMTgxLDIyIEBAIHZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgcmV0dXJuOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFY
X0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KCp0aGlzLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHBy
b3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9Ci0gICAgCi0gICAgaWYgKHN5bnRoZXNp
emVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQ
cm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkK
LSAgICAgICAgcmV0dXJuOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHN5
bnRoZXNpemVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhv
bGVGb3JQcm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlm
IChzaG91bGRUaHJvdykKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
SlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDY5MDNiZTEzMDc5M2Q1OGMxYmU1OWI2ZGNh
OWRkYTE1ODFjZDc3ZTAuLmVjYzRlOTYxNWExNGI2ZTkzMTM1M2RiOWE1Njg0NTEzM2JiNmZhMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI3OSwx
MSArMjc5LDExIEBAIGNsYXNzIEpTVmFsdWUgewogCiAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKIAotICAgIHZv
aWQgcHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgdm9pZCBwdXRJbmxpbmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dFRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcHV0SW5s
aW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRCeUlu
ZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIHRvVGhpcyhFeGVjU3RhdGUqLCBFQ01BTW9kZSkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IDc2ZGIzNTZjMTk4NWQxNTcyMDUyZDJhNDVjZTI5OWUzY2E1MjY5NjcuLjEz
MTIwYWY4ODRmZGMzZjNkNWRkNGYxYmVlZGM2MzU0YjRmMzc2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNzg1LDQwICs3
ODUsMzYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4
ZWMsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3QKICAgICByZXR1cm4gZ2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgc3RhdGljX2Nhc3Q8ZG91YmxlPihwcm9wZXJ0eU5hbWUpKSk7
CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSBib29sIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkp
CisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKworICAgIHJldHVybiBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgdm9pZCBKU1ZhbHVlOjpwdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1
cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKICAg
ICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKICAgICBhdXRvIHB1dE1ldGhvZCA9IGNlbGwtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQ7Ci0gICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0g
SlNPYmplY3Q6OnB1dCkpIHsKLSAgICAgICAgSlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBKU09iamVjdDo6cHV0KSkKKyAgICAgICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgb3RoZXJTbG90ID0gc2xvdDsKLSAgICBwdXRNZXRo
b2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKKyAgICBib29s
IHJlc3VsdCA9IHB1dE1ldGhvZChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhl
clNsb3QpOwogICAgIHNsb3QgPSBvdGhlclNsb3Q7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
aW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBi
b29sIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgaWYgKFVOTElL
RUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxs
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBpZiAoVU5M
SUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisKKyAgICByZXR1cm4gYXND
ZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDUzNmM4MTlhMWY3OWQ2NjgwYzQxYmVmOWNiMDU2
MzQxYmI0YWM2MjIuLmFiOGIyYzYwYTQ3MzljNmJjNzc0YWE2OTcyYzU0OGRlOWY0ZmM1MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA0LDI1ICsxMDQs
MjMgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7
CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1
ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGNlbGwtPmlzU3RyaW5n
KCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0
VG9QcmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQo
dGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBj
ZWxsLT5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNo
b3VsZFRocm93KTsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUs
IHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNo
b3VsZFRocm93KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggZTBkZDE2NDRhNjczZTg3NzY4NmNiYzhlZDM1
ZWFjODUzNjFkNzYyNy4uZTQxNDMxZmQxOGQyOTg0YmQ4NjMyMTJmMjI4Nzc4ZjI4NTNjNTYyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE0NSw4ICsxNDUsOCBA
QCBjbGFzcyBKU0NlbGwgewogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7
CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7CiAgICAgY29uc3Qg
TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICAgICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNDZiZjFj
YmJlOTYyNDE0YmJhZjc4NGNkZWZiMzM5YjNlNGEyOGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3ZTQ4
ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKQEAgLTExMSwxOCArMTExLDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0
T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3
OjpwdXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aAotICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNs
b3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBl
ZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgfHwg
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRv
IHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKIAotICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRlMTA1
OWU5ZjcyNTVhMThjNTgwNmZkYTQ5ZmMuLjc3NGI2ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRmN2Qx
ZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
QEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVy
VmlldyB7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDY1MTJkNGY5OWYxZTgyNzNhZjdjNzQxNzg5ZjQyNGM0YTNmZDAwZGMuLjU0MWYwNGIw
ZGU5MTcxMzBkYjJmN2MzOWI3MWNjNTdhZGI5ZmQ1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC00MjEsMTMgKzQyMSwxMiBAQCB2b2lkIEpT
RnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsCiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rp
b246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0Z1
bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewotICAgICAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHBy
b3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3Zlcndy
aXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYy
IDguMTIuOS4KQEAgLTQzNywyMyArNDM2LDIxIEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90
eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhp
cyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAgIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKICAgICB9CiAgICAgaWYgKHRo
aXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSAmJiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmln
Z2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRo
ZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9rYXksIG9rYXkpOwotICAg
ICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKSB7CiAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZO
ZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Z1
bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCBiZTkyMTAxNDE4MzljODE4OGZiNDE4MzBkOTI0YTdlZDI5NmQ4YTYy
Li5lODAxY2E1YjE3ZWFkMjRjYzkxYTQ0Y2NjYTZhMmY0MTdlZTA5ZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNjksNyArMTY5LDcgQEAgY2xh
c3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA4NTg5MzkyYWZjZGExZjViMDE5N2RjNDk1OWEyNDdl
MmRiMGZiYTNkLi40MDdhNzEyZjU4OGQwYWY4MjMyMGI1OThhMjI5N2YxZGNiMzg5NzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTI3NCwxMiArMjc0LDEyIEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBmcmllbmQgc3RydWN0IFR5
cGVkQXJyYXlDbGFzc0luZm9zOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CiAgICAgCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYjZjNmFlZDg4MTRhOWFiMmRjY2QyMGU2MTFlNjdjNGY5
ZDljYmE5MS4uNDUxNzAwZmJjOGUxZDUzMWUyMTljYjA5NDk3NjU4MTI5OTI4YWNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMwMywxOCArMzAzLDE2IEBACiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci12b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpwdXQoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoCiAg
ICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Kj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CkBAIC0zNjQsMTkgKzM2MiwxOCBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
dm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJbmRleCgKK2Jvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiAgICAgSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAg
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwotICAg
ICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoCi0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBz
bG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJv
cGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICAKICAgICB0aGlzT2JqZWN0LT5z
ZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRl
eCA2ZDE3NjA4NmVhZDM5MzNkYzAxY2I3NzJmN2QzYTE1OTQyZmJkMGY2Li5lZmZlYmZiNDUxNTEx
MzFmYTA1ODU0NTQ1ODViMzQ4MGU2NTc5NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBA
IC0zOCwxMyArMzgsMTUgQEAgYm9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gc3lt
Ym9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAgICAgYm9vbCBhbHdheXNUaHJvd1do
ZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHkgPSB0cnVlOwogICAgIGJvb2wgaWdub3JlQ29uc3RB
c3NpZ25tZW50RXJyb3IgPSBzbG90LmlzSW5pdGlhbGl6YXRpb24oKTsKLSAgICBzeW1ib2xUYWJs
ZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHksIGlnbm9yZUNvbnN0
QXNzaWdubWVudEVycm9yKTsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIHN5bWJv
bFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSwgaWdub3Jl
Q29uc3RBc3NpZ25tZW50RXJyb3IsIHB1dFJlc3VsdCk7CisgICAgcmV0dXJuIHB1dFJlc3VsdDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA2NDNmMDk1
ZGQxOTc5OWU1YWEzMjYwYjM5ODJhOWE5M2U1NmJmNTMwLi44ZDRmZDJlMDQ2MTUwMGU4MmRjY2Q2
ODBiMWFjMTZjZjFkNmYwNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzeW1ib2xUYWJsZSgpLT5zaXplKCk7
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAxOTgyY2IzZTM1NjlkMzkzOTdjYTM0NzdhNmI0OWYxOTIxMzdmNGU3Li5h
NTA0MGNiZmM0YjM0NDdkNmVmNjk4YzYwNWIzNjY0MDM5ZTIyMGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MjAsMTYgKzYy
MCwxNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNMZWdhY3lQcm9maWxlcigpIGNvbnN0CiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzTGVnYWN5UHJvZmls
aW5nKHRoaXMpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFI
ZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNP
YmplY3QpKTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gc2xvdC5pc1N0
cmljdE1vZGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gZmFsc2U7Ci0gICAg
aWYgKHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9u
bHlFcnJvcnMpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7CisgICAgaWYgKHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdu
b3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhy
b3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA5ZmM2NTk3OTRiMjllN2FiODA4YWMxYzhjMjk5Mzc5MWNlMDZiMmQzLi44M2VlMzgxM2U4
YWM5OGEzN2EyMmNlYjk0N2VmYzE4OTQ1NjIyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZTk5YmJiYTg5ZDlkZDY5NDM5NzdjMTIyODUy
MTA0N2RkNWQ3NDJlNC4uODI5MDFhNzk0NGRiYTY0YTEyMDFkZjE1NDk1NmQ0ZmE0MjM1NDJhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcApAQCAtODAsMjEgKzgwLDIyIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNMZXhpY2FsRW52
aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTGV4aWNhbEVu
dmlyb25tZW50Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFw
OjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKIAogICAgIGJvb2wgc2hv
dWxkVGhyb3dSZWFkT25seUVycm9yID0gc2xvdC5pc1N0cmljdE1vZGUoKSB8fCB0aGlzT2JqZWN0
LT5pc0xleGljYWxTY29wZSgpOwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSBmYWxz
ZTsKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJuOworICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRT
ZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIHB1dFJlc3VsdDsKIAogICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVj
dCBiZWNhdXNlIF9fcHJvdG9fXyBhbmQgZ2V0dGVyL3NldHRlciAKICAgICAvLyBwcm9wZXJ0aWVz
IGFyZSBub24tc3RhbmRhcmQgZXh0ZW5zaW9ucyB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9ucyBk
byBub3QKICAgICAvLyBleHBvc2UgaW4gdGhlIGxleGljYWxFbnZpcm9ubWVudCBvYmplY3QuCiAg
ICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAg
IHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTTGV4
aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IGM0MGFlODczOTVj
YzMxMjJkNjgwMzFlYzJmM2ZjZDU0ODdlMGQ4YzUuLjUxNWUxMTc5YzYxNDQwMjdmM2Q2MWY4NjI2
YmYzNDBiOGIzYmRiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBKU0xleGlj
YWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmMDhmZTNkMDJiOTljODMz
YjU1MTczZWI1NDA4NGMxZTIwNDM1MGZiLi4wNGIwOGY0ZDE4OTU5MmIzMjE4ZDcyZTczNGFjNzFl
OWVjZGYxOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTA4LDE0ICsxMDgsMTQgQEAgdm9pZCBKU01vZHVs
ZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGws
IEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJheSwgbW9kZSk7CiB9CiAKLXZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIC8vIEFsbCBpbXBv
cnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgogICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9y
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOwog
ICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5
cGU6OlJlc29sdmVkKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXgg
ZjdlZmE2MjYzYjJiMjc0OWY3ODhjMGE3ZjA3M2Y3Njc3YTAwOWIwMy4uNDM0YmI3YzNmOGEyMWFl
YjhkOWVmNTljMjJhZmUxYjA0NjVmMzM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBjbGFz
cyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNhbEVudmlyb25tZW50IHsKIAog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKaW5kZXggMGZlOWMzMjY2ZmFjYTg3NDgyZTAyYTFmYWM2YmFhOWMzMzA5ZGI4Ny4uNDBkZGE3
MzMzZmY3MjBhZGY2MDk4ZmY0Nzc1NzJmMWViMTg2YWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApA
QCAtMTUxLDE3ICsxNTEsMTkgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCmluZGV4IDM3ZTY0MmU4NzRhNDZkMTNmNDY1ZTFhN2Q3YzdkZTQxY2Y3
YjI3ZDEuLjhjZmVjZmQwYTQ1YjUwNGU2ZWFlNzQ3OWI1M2QxMThmNDcyNjY3OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaApAQCAtNDYsOCArNDYsOCBAQCBjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKaW5kZXggMWNjNDkzNzVkNGYyY2YyZWM3ZTJlMDFiYmE3YmI4YTkxNDdmODRm
Zi4uN2I3YjMyM2U5OGE5MWExOTgyYWFjMDU2MzZjMWFhOWQ5NzgxZDI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtNzg2LDcg
Kzc4Niw4IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4
ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgICAgICBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVs
ZU5hbWVzcGFjZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNo
V2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgaW1wb3J0RW50cnkubG9jYWxO
YW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxz
ZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgICAgICBib29sIHB1
dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9p
bnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVudHJ5LmxvY2FsTmFtZSwgbmFt
ZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGln
bm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVz
b2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAgICAgICAgIHN3
aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CkBAIC04MTYsOCArODE3LDEwIEBAIHZvaWQgSlNNb2R1
bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxl
UHJvZ3JhbUV4ZWN1CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IG1fZGVjbGFyZWRW
YXJpYWJsZXMpIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
LT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnZhck9mZnNldCgpOwotICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpCi0gICAgICAg
ICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwg
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1Vu
ZGVmaW5lZCgpLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkp
IHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBzeW1i
b2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgp
LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5
RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
ZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCkBAIC04MzcsNyArODQwLDggQEAgdm9pZCBKU01vZHVs
ZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQ
cm9ncmFtRXhlY3UKICAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3Vy
Y2UoKSksIG1vZHVsZUVudmlyb25tZW50KTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91
Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
ICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAgICAg
IGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNo
V2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAq
LyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcAppbmRleCBhZjQ3MzdlOWIwMmY1NzEwMzA2NWVlN2Q4ZTdiYTA0MGRlYzBk
MmFjLi5jYjUxNWQ4NDQyNWEyYjNjYmE4OTU1YzhlNjIxODQxYjljNzI0NjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApAQCAtNTgsMTQg
KzU4LDE2IEBAIGJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTTm90QW5PYmplY3Q6
OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNl
cHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTm90QW5PYmplY3Q6OnB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9v
bCkKK2Jvb2wgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywg
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU05v
dEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90
QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3Qu
aAppbmRleCAwYzI2ZWM5OGI2ZmIxN2E4MWNlYzk1OWY3MWQ1YWNjNDQ4YTQ1N2UyLi45YzQ3OTQz
ZTIxMWFkZWNhY2NhZjlhZDJmMGUzMDFlZmUyY2IzZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC02OSw4ICs2OSw4IEBAIGNsYXNzIEpT
Tm90QW5PYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IGZjYjM1MGE0OWQ1MGE2OTRhYjQ2ZTFhZDQ1Njg1ZjE2MDcyOGQ4MWYu
LmI4NjIyMmJhOTNkOWYyY2I4NWYyMjE2NTVlMTlmNzMzZDJlMWNjOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTM3OSwxMiArMzc5LDEyIEBAIGJv
b2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIHRoaXNPYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywKIH0KIAogLy8gRUNNQSA4LjYuMi4yCi12b2lkIEpTT2JqZWN0
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHB1
dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1
cm4gcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci12b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCkBAIC0zOTcsMTUgKzM5NywxNSBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5w
cm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
KSB8fCBvYmogPT0gdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNWYWx1ZSBn
cyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJT
ZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgdGhpcywgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwor
ICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihleGVjLCB0aGlzLCBncywg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlU2V0dGVyKG9iaiwgb2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7
CiAgICAgICAgICAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRlcyAm
IEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKQEAgLTQxMyw3
ICs0MTMsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGdz
LmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShvYmosIGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0
ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIApAQCAtNDIzLDE2ICs0MjMsMTMgQEAg
dm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgfQogICAgICAgICBpZiAoIW9iai0+c3Rh
dGljRnVuY3Rpb25zUmVpZmllZCgpKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5jbGFzc0luZm8o
KS0+aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcHV0RW50cnkoZXhlYywgZW50cnksIG9iaiwg
dGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVudHJ5
ID0gb2JqLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlm
IChvYmotPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUgJiYgcHJvcGVydHlOYW1lICE9IHZtLnBy
b3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewogICAgICAgICAgICAgUHJveHlPYmplY3Qq
IHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqKTsKLSAgICAgICAgICAgIHByb3h5LT5Q
cm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwcm94eS0+UHJveHlPYmpl
Y3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAg
IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAg
ICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQpAQCAtNDQxLDE4ICs0MzgsMjEgQEAgdm9pZCBKU09i
amVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5w
cm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
KSB8fCBvYmogPT0gdGhpcyk7Ci0gICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUo
KSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAK
ICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhl
YywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTQ2
MiwxNSArNDYyLDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICBjYXNlIEFMTF9VTkRF
Q0lERURfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydFVuZGVj
aWRlZEZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKICAgICAgICAgLy8gUmVsb29wLgotICAg
ICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAK
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVl
LmlzSW50MzIoKSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydEludDMyRm9yVmFs
dWUoZXhlYy0+dm0oKSwgdmFsdWUpOwotICAgICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAg
ICAgfQpAQCAtNDgyLDIyICs0ODAsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAg
ICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtwcm9wZXJ0eU5hbWVdLnNldChleGVjLT52bSgpLCB0
aGlzT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5
LT5wdWJsaWNMZW5ndGgoKSkKICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3Ro
KHByb3BlcnR5TmFtZSArIDEpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7
CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgdGhpc09iamVj
dC0+Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8v
IFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUu
YXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkg
ewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVj
LT52bSgpKTsKICAgICAgICAgICAgIC8vIFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgo
Y2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKQEAgLTUwNSw3ICs1MDEs
NyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
c0RvdWJsZSgpW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZUFzRG91YmxlOwogICAgICAgICBpZiAocHJv
cGVydHlOYW1lID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0
ZXJmbHktPnNldFB1YmxpY0xlbmd0aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgpAQCAtNTI3LDcgKzUyMyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAg
ICAgCiAgICAgICAgIHZhbHVlU2xvdC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgpAQCAtNTQyLDI2ICs1
MzgsMjggQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICAKICAgICAgICAgLy8gVXBk
YXRlIGxlbmd0aCAmIG1fbnVtVmFsdWVzSW5WZWN0b3IgYXMgbmVjZXNzYXJ5LgogICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID49IGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3Qt
PmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OwogICAgICAgICAgICAgbGVuZ3RoID0gcHJvcGVydHlOYW1lICsgMTsKICAgICAgICAgICAg
IHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yOwogICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZVNsb3QpIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAg
ICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvcjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNl
dChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0
LT5wdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAK
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5B
cnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKFZNJiB2bSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpA
QCAtMTI0Myw3ICsxMjQxLDcgQEAgYm9vbCBKU09iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+YWxsb3dzQWNjZXNzRnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lk
IEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgZ2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldHRlcik7CkBA
IC0xMjU0LDEwICsxMjUyLDEwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0CiAgICAgaWYgKCEo
YXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxl
KHRydWUpOwogCi0gICAgZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2Jq
ZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1
dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKHNldHRlcik7CkBAIC0xMjY4
LDI3ICsxMjY2LDI1IEBAIHZvaWQgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0CiAgICAgaWYgKCEoYXR0cmli
dXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUp
OwogCi0gICAgZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBmYWxzZSk7CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewotICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0
cmlidXRlcywgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAK
LSAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodGhpcyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCBy
ZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKIAogICAgIEFTU0VSVChzbG90
LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KTsKIApAQCAtMTI5NiwxOCAr
MTI5MiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdQogICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKICAgICBzdHJ1Y3R1cmUtPnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNX
aXRoUHJvdG9DaGVjayhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wg
cmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkKICAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGll
cygpOwogCiAgICAgc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFBy
b3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90
byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gSGFzUHJvcGVydHkoTywgUCkgZnJvbSBT
ZWN0aW9uIDcuMy4xMCBvZiB0aGUgc3BlYy4KQEAgLTE4MjcsNyArMTgyNSw3IEBAIE5FVkVSX0lO
TElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBnCiAgICAgc2xvdC5zZXRDYWNoZWFibGVHZXR0ZXJTbG90KHRoaXMsIGF0
dHJpYnV0ZXMsIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQpOwog
fQogCi12b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMs
IFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQorYm9vbCBKU09i
amVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVu
dHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFBy
b3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gbWFwID0gbV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT5hcnJheVN0b3JhZ2Uo
KS0+bV9zcGFyc2VNYXAuZ2V0KCk7CkBAIC0xODM4LDcgKzE4MzYsNyBAQCB2b2lkIEpTT2JqZWN0
OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkq
IGVudHJ5SW5NYQogICAgICAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpCiAgICAgICAgICAgICBlbnRyeUluTWFwLT5zZXQodm0sIG1hcCwganNVbmRlZmlu
ZWQoKSk7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5BY2Nlc3NvcjsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3Jp
cHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CkBAIC0xODYxLDExICsxODU5LDEyIEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNl
QXJyYXlFbnRyeSogZW50cnlJbk1hCiAKICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAs
IGFjY2Vzc29yKTsKICAgICAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpICYgflJlYWRPbmx5Owot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEFTU0VS
VChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSk7CiAgICAgZW50cnlJbk1hcC0+YXR0
cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2Ny
aXB0b3IpOworICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBEZWZpbmVkIGluIEVTNS4xIDguMTIu
OQpAQCAtMjAwNCw3ICsyMDAzLDcgQEAgdm9pZCBKU09iamVjdDo6ZGVhbGxvY2F0ZVNwYXJzZUlu
ZGV4TWFwKCkKICAgICAgICAgYXJyYXlTdG9yYWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOwogfQog
Ci1ib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3csIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhp
czsgOykgewogICAgICAgICAvLyBUaGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3Bl
Y3QgdG8gcHJvdG90eXBlcyBhcyBKU09iamVjdDo6cHV0KCkuIEl0IG9ubHkKQEAgLTIwMTYsMTQg
KzIwMTUsMTQgQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaWYgKHN0b3JhZ2Ug
JiYgc3RvcmFnZS0+bV9zcGFyc2VNYXApIHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+ZmluZChpKTsKICAgICAg
ICAgICAgIGlmIChpdGVyICE9IHN0b3JhZ2UtPm1fc3BhcnNlTWFwLT5ub3RGb3VuZCgpICYmIChp
dGVyLT52YWx1ZS5hdHRyaWJ1dGVzICYgKEFjY2Vzc29yIHwgUmVhZE9ubHkpKSkgewotICAgICAg
ICAgICAgICAgIGl0ZXItPnZhbHVlLnB1dChleGVjLCB0aGlzVmFsdWUsIHN0b3JhZ2UtPm1fc3Bh
cnNlTWFwLmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICAgICAgICAgIHB1dFJl
c3VsdCA9IGl0ZXItPnZhbHVlLnB1dChleGVjLCB0aGlzVmFsdWUsIHN0b3JhZ2UtPm1fc3BhcnNl
TWFwLmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnQtPnR5
cGUoKSA9PSBQcm94eU9iamVjdFR5cGUpIHsKICAgICAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94
eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGN1cnJlbnQpOwotICAgICAgICAgICAgcHJveHktPnB1
dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc1ZhbHVlLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwor
ICAgICAgICAgICAgcHV0UmVzdWx0ID0gcHJveHktPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhp
c1ZhbHVlLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMDM1LDE3ICsyMDM0LDE3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKCiAgICAgfQogfQogCi1ib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2Vw
dFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZSgpOwogICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBhc09iamVjdChw
cm90b3R5cGVWYWx1ZSktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90
b3R5cGUoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gYXNP
YmplY3QocHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
Rm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0
KTsKIH0KIAogdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGU+Ci12b2lkIEpTT2Jq
ZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBKU09iamVjdDo6cHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQoKGluZGV4aW5nVHlw
ZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCgh
aW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKQEAgLTIwNTksMTYgKzIwNTgsMTUgQEAgdm9pZCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4
ZWNTdGF0ZSogZXhlYywgdW4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIAogICAgIGlm
IChpID4gTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYCi0gICAgICAgIHx8IChpID49IE1JTl9TUEFS
U0VfQVJSQVlfSU5ERVgKLSAgICAgICAgICAgICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGks
IGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCisgICAgICAgIHx8IChp
ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVggJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwg
Y291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihidXR0ZXJmbHkpKSkKICAgICAgICAgfHwgaW5k
ZXhJc1N1ZmZpY2llbnRseUJleW9uZExlbmd0aEZvclNwYXJzZU1hcChpLCBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKSkgewogICAgICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwog
ICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2VTbG93KHZtKTsKICAgICAgICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7Ci0gICAgICAgIG1hcC0+
cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CiAgICAgICAg
IEFTU0VSVChpID49IGFycmF5U3RvcmFnZSgpLT5sZW5ndGgoKSk7CiAgICAgICAgIGFycmF5U3Rv
cmFnZSgpLT5zZXRMZW5ndGgoaSArIDEpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgZW5zdXJlTGVuZ3RoKHZtLCBpICsgMSk7CkBAIC0yMDc5
LDMxICsyMDc3LDMyIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5n
dGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgY2FzZSBJbnQzMlNo
YXBlOgogICAgICAgICBBU1NFUlQodmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAgYnV0dGVyZmx5
LT5jb250aWd1b3VzSW50MzIoKVtpXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIERv
dWJsZVNoYXBlOiB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc051bWJlcigpKTsKICAgICAgICAg
ZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICBBU1NFUlQo
dmFsdWVBc0RvdWJsZSA9PSB2YWx1ZUFzRG91YmxlKTsKICAgICAgICAgYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKClbaV0gPSB2YWx1ZUFzRG91YmxlOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENvbnRpZ3VvdXNTaGFw
ZToKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uc2V0KHZtLCB0aGlzLCB2YWx1
ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IH0KIAogLy8gRXhwbGljaXQgaW5zdGFudGlhdGlvbnMgbmVlZGVkIGJ5IEpTQXJyYXkuY3BwLgot
dGVtcGxhdGUgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhv
dXRBdHRyaWJ1dGVzPEludDMyU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsK
LXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUp
OwotdGVtcGxhdGUgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpT
VmFsdWUpOwordGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aFdpdGhvdXRBdHRyaWJ1dGVzPEludDMyU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQs
IEpTVmFsdWUpOwordGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNTaGFwZT4oRXhlY1N0YXRlKiwgdW5z
aWduZWQsIEpTVmFsdWUpOwogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKK2Jvb2wg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAK
QEAgLTIxMzAsMTIgKzIxMjksMTEgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAg
ICAgIHN0b3JhZ2UgPSBhcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVj
dG9yW2ldLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3Qg
dXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1h
cCAmIGFkZCB0aGUgdmFsdWUuCiAgICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAo
ZXhlYy0+dm0oKSk7Ci0gICAgICAgIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUs
IHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbWFwLT5wdXRF
bnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIAogICAgIC8v
IFVwZGF0ZSBtX2xlbmd0aCBpZiBuZWNlc3NhcnkuCkBAIC0yMTQ1LDcgKzIxNDMsNyBAQCB2b2lk
IEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIHVucwogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkg
fHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhy
b3cpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBpICsgMTsKICAgICAg
ICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCk7CkBAIC0yMTU0LDEwICsyMTUyLDggQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAvLyBXZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgbWFw
IC0gY2hlY2sgd2hldGhlciB3ZSBzdGlsbCB3YW50IHRvIGJlIGRvaW5nIHNvLgogICAgIC8vIFdl
IHdpbGwgY29udGludWUgIHRvIHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBpcyBzZXQs
IGEgdmVjdG9yIHdvdWxkIGJlIHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFpbHMuCiAg
ICAgdW5zaWduZWQgbnVtVmFsdWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0
b3IgKyBtYXAtPnNpemUoKTsKLSAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VF
bm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0
b3JMZW5ndGgoZXhlYy0+dm0oKSwgbGVuZ3RoKSkgewotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxl
bmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZt
KCksIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGks
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAgICAvLyBSZXJlYWQgbV9zdG9yYWdlIGFmdGVyIGlu
Y3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICBzdG9y
YWdlID0gYXJyYXlTdG9yYWdlKCk7CkBAIC0yMTc1LDkgKzIxNzEsMTAgQEAgdm9pZCBKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRl
KiBleGVjLCB1bnMKICAgICBpZiAoIXZhbHVlU2xvdCkKICAgICAgICAgKytzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yOwogICAgIHZhbHVlU2xvdC5zZXQodm0sIHRoaXMsIHZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCkBAIC0yMTg3LDI1ICsyMTg0LDIy
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmIChpbmRl
eGluZ1Nob3VsZEJlU3BhcnNlKCkpIHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdywKICAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3Jh
Z2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pKTsKLSAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbmRleElzU3VmZmljaWVudGx5QmV5b25k
TGVuZ3RoRm9yU3BhcnNlTWFwKGksIDApIHx8IGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkg
ewotICAgICAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoCisgICAgICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93
LCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygp
KSB7CiAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbmRleGluZyB0eXBlIHRvIHRoZSBTbG93
UHV0QXJyYXlTdG9yYWdlIGFuZCByZXRyeS4KICAgICAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFn
ZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCgwLCAwLCBpICsgMSkpOwotICAgICAgICAg
ICAgcHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzLCBleGVjLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjcmVh
dGVJbml0aWFsRm9yVmFsdWVBbmRTZXQodm0sIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfVU5ERUNJ
REVEX0lOREVYSU5HX1RZUEVTOiB7CkBAIC0yMjEzLDM4ICsyMjA3LDMzIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBB
TExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPEludDMyU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgor
ICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzPEludDMyU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKICAgICAgICAgCi0gICAgY2FzZSBBTExf
RE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgor
ICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzPERvdWJsZVNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2UgQUxM
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgcHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNTaGFwZT4oZXhlYywgaSwgdmFs
dWUpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRF
WElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKICAgICAg
ICAgCiAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgIGNhc2Ug
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogewogICAgICAgICAvLyBObyBvd24gcHJvcGVy
dHkgcHJlc2VudCBpbiB0aGUgdmVjdG9yLCBidXQgdGhlcmUgbWlnaHQgYmUgaW4gdGhlIHNwYXJz
ZSBtYXAhCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFycmF5U3RvcmFnZSgp
LT5tX3NwYXJzZU1hcC5nZXQoKTsKLSAgICAgICAgaWYgKCEobWFwICYmIG1hcC0+Y29udGFpbnMo
aSkpICYmIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgaSwgdmFsdWUs
IHNob3VsZFRocm93KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYm9vbCBwdXRSZXN1
bHQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCEobWFwICYmIG1hcC0+Y29udGFpbnMoaSkpICYmIGF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgaSwgdmFsdWUsIHNob3VsZFRo
cm93LCBwdXRSZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAg
RkFMTFRIUk9VR0g7CiAgICAgfQogCiAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6
CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dywgYXJyYXlTdG9yYWdlKCkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHB1dEJ5
SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIGksIHZhbHVlLCBz
aG91bGRUaHJvdywgYXJyYXlTdG9yYWdlKCkpOwogICAgICAgICAKICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlLCBBcnJheVN0
b3JhZ2UqIHN0b3JhZ2UpCkBAIC0yNDE4LDE1ICsyNDA3LDE1IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWCiAgICAgfQogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRyaW5z
aWNHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50
cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRp
ZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29y
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgbmFt
ZS5zdHJpbmcoKSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7CiAgICAgYWNjZXNzb3ItPnNl
dEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0Tm9uSW5k
ZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCBuYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0
aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKTsKICAgICBpZiAoIW5hbWUpCkBAIC0yNDM0LDcgKzI0MjMs
NyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIEFTU0VSVChuYW1lKTsKIAogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKLSAgICBw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworICAgIHJl
dHVybiBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwog
fQogCiBKU0Z1bmN0aW9uKiBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9w
ZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQpAQCAtMjc0NSwxMiArMjczNCwxMSBAQCBzdGF0aWMgYm9vbCBwdXREZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRhcmdldCwgUHJvcGVydHlOYW1lIHBy
b3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlC
ZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCi0g
ICAgICAgIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICBl
bHNlCi0gICAgICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVl
KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUp
OwogfQogCiBjbGFzcyBEZWZpbmVPd25Qcm9wZXJ0eVNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDIyNjI4ZTA5MzUxZTJlODAxYWI2ZWE4N2Q4NzBk
NjRhY2FkYzYzYjMuLjM2MWYyNmMwZGY1MmVlNTk4NmRmNjBiN2FjMGI0N2ZlNGExODJmZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTU4LDE4ICsxNTgs
MTggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1f
YnV0dGVyZmx5LmdldCh0aGlzKS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgfQogICAgIAotICAgIHN0
YXRpYyB2b2lkIHB1dElubGluZShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dElubGluZShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAg
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeUluZGV4SW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogICAgIHsKICAgICAgICAgaWYgKGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUpKSB7
CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgIHJldHVy
biBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAKICAgICAvLyBUaGlz
IGlzIHNpbWlsYXIgdG8gdGhlIHB1dERpcmVjdCogbWV0aG9kczoKQEAgLTE5MSw3ICsxOTEsNyBA
QCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIC8vIEEgbm9u
LXRocm93aW5nIHZlcnNpb24gb2YgcHV0RGlyZWN0IGFuZCBwdXREaXJlY3RJbmRleC4KLSAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVj
dE1heUJlSW5kZXgoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKICAgICAgICAg
CiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcigpIGNvbnN0CiAgICAgewpAQCAtNDg0LDE1ICs0
ODQsMTUgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyAgLSBhY2Nl
c3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3Bl
Y3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2
ZW4gYXR0cmlidXRlcykKICAgICAvLyAgLSB0aGUgcHJvcGVydHkgbmFtZSBpcyBhc3N1bWVkIHRv
IG5vdCBiZSBhbiBpbmRleC4KLSAgICB2b2lkIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgIHZvaWQgcHV0RGlyZWN0KFZN
JiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1
dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDApOworICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgdm9p
ZCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICB2b2lkIHB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYsIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBib29sIHB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICB2b2lkIHB1dEdldHRlcihFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQg
cHV0U2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgYm9vbCBwdXRHZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBib29sIHB1dFNldHRlcihFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTYxOCw4ICs2MTgsOCBAQCBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcHV0RGlyZWN0KFZNJiB2
bSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zm
c2V0KG9mZnNldCktPnNldCh2bSwgdGhpcywgdmFsdWUpOyB9CiAgICAgdm9pZCBwdXREaXJlY3RV
bmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERp
cmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmll
ciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBJZGVudGlmaWVyLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUm
LCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5z
aWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbiogcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0
eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBK
U0Z1bmN0aW9uKiBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC02OTAsNyArNjkwLDcg
QEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBpcyBlcXVpdmFsZW50
IHRvOgogICAgIC8vCiAgICAgLy8gZm9vLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlKC4uLik7Ci0gICAgYm9vbCBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9y
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgYXR0ZW1wdFRvSW50
ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAvLyBSZXR1cm5zIDAgaWYgaW50MzIg
c3RvcmFnZSBjYW5ub3QgYmUgY3JlYXRlZCAtIGVpdGhlciBiZWNhdXNlCiAgICAgLy8gaW5kZXhp
bmcgc2hvdWxkIGJlIHNwYXJzZSwgd2UncmUgaGF2aW5nIGEgYmFkIHRpbWUsIG9yIGJlY2F1c2UK
QEAgLTgzNiw4ICs4MzYsOCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGJvb2wgZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgdGhyb3dFeGNlcHRpb24pOwogCiAgICAg
dGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGU+Ci0gICAgdm9pZCBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKLSAgICB2b2lkIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKik7CisgICAgYm9vbCBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKik7CiAKICAgICBi
b29sIGluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiwgdW5zaWduZWQgbmV3TGVuZ3RoKTsKICAgICB2
b2lkIGRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgpOwpAQCAtODQ2LDcgKzg0Niw3IEBAIGNsYXNz
IEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIAogICAgIHZvaWQgbm90aWZ5UHJl
c2VuY2VPZkluZGV4ZWRBY2Nlc3NvcnMoVk0mKTsKICAgICAgICAgCi0gICAgYm9vbCBhdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgICAgIAogICAgIC8vIENhbGwgdGhp
cyBpZiB5b3Ugd2FudCBzZXRJbmRleFF1aWNrbHkgdG8gc3VjY2VlZCBhbmQgeW91J3JlIHN1cmUg
dGhhdAogICAgIC8vIHRoZSBhcnJheSBpcyBjb250aWd1b3VzLgpAQCAtODkxLDcgKzg5MSw3IEBA
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3RJbnRl
cm5hbChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiwgUHJvcGVydHlOYW1lKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSB2b2lkIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUg
Ym9vbCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICBib29sIGdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBnZXRPd25Ob25J
bmRleFByb3BlcnR5U2xvdChWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CkBAIC05MDAsOSArOTAwLDkgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBmaW5kUHJv
cGVydHlIYXNoRW50cnkoUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgCi0gICAgdm9pZCBw
dXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqLCBTcGFyc2VBcnJheUVudHJ5KiwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGQpOworICAgIGJvb2wg
cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSosIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsKICAgICAgICAg
Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgYm9vbCBwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRl
eE1vZGUsIEFycmF5U3RvcmFnZSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUpOwog
ICAgICAgICAKQEAgLTE0MjMsMTkgKzE0MjMsMTkgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEK
ICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0
ZXMgJiBBY2Nlc3NvcikpOwogICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIo
KSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJu
YWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZp
bmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3Qp
OwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
aW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBB
U1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpOwogICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0
b21HZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93
blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJu
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCBkYjE3MGYyOThjYjI1NTljN2Uz
N2ExMmVlMTEwMmMwMDkwYzUwOGEwLi45ZDUzMzQxYTE0ODJjMmU5NjZjMzI0MGMxYjMwMmRlZTI4
MGU2MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaApAQCAtNTMsNyArNTMsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNh
blBlcmZvcm1GYXN0UHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBQcgogfQogCiAv
LyBFQ01BIDguNi4yLjIKLUFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lKEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUKHZhbHVlKTsKQEAgLTYyLDE4ICs2MiwxOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYQogICAgIAogICAgIC8vIFRyeSBpbmRleGVkIHB1dCBmaXJzdC4gVGhpcyBpcyByZXF1
aXJlZCBmb3IgY29ycmVjdG5lc3MsIHNpbmNlIGxvYWRzIG9uIHByb3BlcnR5IG5hbWVzIHRoYXQg
YXBwZWFyIGxpa2UKICAgICAvLyB2YWxpZCBpbmRpY2VzIHdpbGwgbmV2ZXIgbG9vayBpbiB0aGUg
bmFtZWQgcHJvcGVydHkgc3RvcmFnZS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHB1dEJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShleGVjLCB2
bSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVy
ZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkKLSAgICAgICAgICAg
ICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHRoaXNPYmplY3QtPnB1dElubGluZVNsb3coZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7
CisgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRJbmxp
bmVTbG93KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
eHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXgg
OTM3YzA4ODc0NWY4YmI3Y2ZmYmRmN2FlMTkzYzUyYmU1Y2Y3YjdjZi4uNjA4MzUyOTM1MDllZTBk
ZTA3MTY4YWJlN2Y3YTJlYWM2NDFlYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5jcHAKQEAgLTc4LDE2ICs3OCwxNiBAQCBib29sIEpTUHJveHk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
ZwogICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNQcm94eTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTUHJveHk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCkt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNQcm94eTo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTUHJveHkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlz
T2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAyYmRjZDFiNzJhYmNlYmE4N2ZmYjA2ZTc0
ZmUxNmI2MzI3M2Q4MTI0Li41NzA5MjFiZTE4YzgxNjdmOWM3ZmQ1NjY2YWZiODBiOWJiYWVmZWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC03Niw4ICs3Niw4
IEBAIGNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCmluZGV4IDM2OGNlZGNiODBiM2E3NGJiNWFjMjM2Zjc2YWJhYjgxZTI5
NTkwYmYuLmQ0NGNkZTAzNjRjOTdkOGRmNWRiY2Q5MmMzODhkZDFhNGY1N2M4ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
QEAgLTE0OSw3ICsxNDksNyBAQCBlbnVtIGNsYXNzIFN5bWJvbFRhYmxlUHV0TW9kZSB7CiB0ZW1w
bGF0ZTxTeW1ib2xUYWJsZVB1dE1vZGUgc3ltYm9sVGFibGVQdXRNb2RlLCB0eXBlbmFtZSBTeW1i
b2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICBTeW1i
b2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLAotICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBX
YXRjaHBvaW50U2V0KiYgc2V0KQorICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBi
b29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBXYXRjaHBvaW50U2V0KiYgc2V0LCBib29sJiBwdXRS
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgp
ICYmICFpZ25vcmVSZWFkT25seUVycm9ycykgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93
UmVhZE9ubHlFcnJvcikKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgcHV0UmVzdWx0
ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xODgs
MTcgKzE4OSwxOCBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICAvLyB0aGUgcmln
aHQgZm9yIGJhcnJpZXJzIHRvIGJlIGFibGUgdG8gdHJpZ2dlciBHQy4gQW5kIEkgZG9uJ3Qgd2Fu
dCB0byBob2xkIFZNCiAgICAgLy8gbG9ja3Mgd2hpbGUgR0MnaW5nLgogICAgIHJlZy0+c2V0KHZt
LCBvYmplY3QsIHZhbHVlKTsKKyAgICBwdXRSZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVl
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9i
amVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBi
b29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAg
V2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0g
MDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6
V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywg
c2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9k
ZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9y
cywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQpCiAgICAgICAgIFZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsOjp0b3VjaChzZXQsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMjA3LDExICsyMDksMTEgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRU
b3VjaFdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5
cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KAog
ICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCi0gICAgYm9vbCBzaG91bGRUaHJv
d1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMpCisgICAgYm9vbCBzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1
dFJlc3VsdCkKIHsKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8U3lt
Ym9sVGFibGVQdXRNb2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8
U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAgICAg
ICAgc2V0LT5pbnZhbGlkYXRlKFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsKG9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7IC8vIERvbid0IG1lc3MgYXJvdW5kIC0gaWYgd2UgaGFkIGZvdW5kIHRoaXMgc3Rh
dGljYWxseSwgd2Ugd291bGQgaGF2ZSBpbnZhbGlkYXRlZCBpdC4KICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMjIwLDEyICsyMjIsMTIgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlk
YXRlV2F0Y2hwb2ludFNldCgKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlw
ZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9p
bnRTZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKLSAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQorICAgIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJv
b2wmIHB1dFJlc3VsdCkKIHsKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAg
IGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmVS
ZWFkT25seUVycm9ycyA9IHRydWU7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxT
eW1ib2xUYWJsZVB1dE1vZGU6OldpdGhBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxT
eW1ib2xUYWJsZVB1dE1vZGU6OldpdGhBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBW
YXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
aW5kZXggMGJmOWQyZTliNTBmZjIyMzQ2NDY2NDYxZDg1OWJlODM4MjU5OGFhZi4uMzU5NWMxNzc5
YjI3MWYwYjg5OWU2Yzc2MTVhMjFhZTgyYTYwMTk0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKQEAgLTI4NCwyNyArMjg0LDM5IEBAIGlubGluZSBib29sIGdldFN0YXRp
Y1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIFRoaXNJ
bXAqCiAvLyAnYmFzZScgbWVhbnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBwcm9wZXJ0eSAocG9z
c2libHkgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgb2JqZWN0IHB1dCB3YXMgY2FsbGVk
IG9uKS4KIC8vICd0aGlzVmFsdWUnIGlzIHRoZSBvYmplY3QgdGhhdCBwdXQgaXMgYmVpbmcgYXBw
bGllZCB0byAoaW4gdGhlIGNhc2Ugb2YgYSBwcm94eSwgdGhlIHByb3h5IHRhcmdldCkuCiAvLyAn
c2xvdC50aGlzVmFsdWUoKScgaXMgdGhlIG9iamVjdCB0aGUgcHV0IHdhcyBvcmlnaW5hbGx5IHBl
cmZvcm1lZCBvbiAoaW4gdGhlIGNhc2Ugb2YgYSBwcm94eSwgdGhlIHByb3h5IGl0c2VsZikuCi1p
bmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lu
bGluZSBib29sIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5LCBKU09iamVjdCogYmFzZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAg
ICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgewogICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0eS4K
ICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih0aGlzVmFsdWUpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICAgICAgfSBlbHNlIGlmIChz
bG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0g
ZWxzZSBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29y
KSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAg
ICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IFJlYWRPbmx5KSkgewogICAgICAgICBKU1ZhbHVlIHVwZGF0ZVRoaXNWYWx1ZSA9IGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvciA/IHNsb3QudGhpc1ZhbHVlKCkgOiBKU1ZhbHVl
KGJhc2UpOwogICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShleGVjLCBKU1ZhbHVlOjpl
bmNvZGUodXBkYXRlVGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSk7CiAgICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3IpCiAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbUFjY2Vzc29yKGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShiYXNlLCBlbnRyeS0+
cHJvcGVydHlQdXR0ZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMzEyLDE0ICsz
MjQsMTQgQEAgaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
VGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXMKICAqIEl0IGxvb2tzIHVwIGEgaGFzaCBl
bnRyeSBmb3IgdGhlIHByb3BlcnR5IHRvIGJlIHNldC4gIElmIGFuIGVudHJ5CiAgKiBpcyBmb3Vu
ZCBpdCBzZXRzIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFs
c2UuCiAgKi8KLWlubGluZSBib29sIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBI
YXNoVGFibGUmIHRhYmxlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBsb29r
dXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogYmFzZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgY29uc3QgSGFzaFRhYmxlVmFs
dWUqIGVudHJ5ID0gdGFibGUuZW50cnkocHJvcGVydHlOYW1lKTsKIAogICAgIGlmICghZW50cnkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNl
LCBiYXNlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBwdXRF
bnRyeShleGVjLCBlbnRyeSwgYmFzZSwgYmFzZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAppbmRleCBlNTlkM2FiMDYwOWUxNDRiMTE3MTlkMzkxMTAxZjExM2Iw
YmQxYjZmLi4wZTJjMDJhYTVhNzY4ODE1NzdmY2Y2ZDRiYTdlNzdiZDM3ZmM5MDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0zNDUsMTIg
KzM0NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbj4KLXZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1Q
dXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJm
b3JtRGVmYXVsdFB1dCkKK2Jvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNl
KCkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2bS5wcm9wZXJ0
eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5h
bWUudWlkKCkpKSkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQog
ICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5k
bGVyVmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0
LiIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwpA
QCAtMzY3LDEyICszNjcsMTAgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChl
eGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFtZXMtPnNldCwgQVNDSUlMaXRl
cmFsKCInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFi
bGUuIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdl
dCgpOwotICAgIGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBwZXJmb3Jt
RGVmYXVsdFB1dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzZXRNZXRob2Qu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0UHV0KCk7CiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0
YXJnZXQpOwpAQCAtMzgxLDYyICszNzksNjEgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAg
ICBhcmd1bWVudHMuYXBwZW5kKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0g
Y2FsbChleGVjLCBzZXRNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1l
bnRzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1
bHQudG9Cb29sZWFuKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCF0cmFwUmVzdWx0QXNC
b29sKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFByb3Bl
cnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXNhbWVW
YWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHB1dFZhbHVlKSkgewogICAgICAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3Mg
J3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgb24g
J3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUgdmFsdWUg
YWxyZWFkeSBvbiB0aGUgJ3RhcmdldCcuIikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRs
ZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5
IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZS4iKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBQcm94eU9iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90
bykgewotICAgICAgICBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pCisgICAgICAgIHJldHVybiBCYXNlOjpw
dXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBQcm94eU9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8g
cGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVjdC0+dGFyZ2V0KCkpOwotICAgICAgICB0YXJnZXQt
Pm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdl
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgfTsKLSAgICB0aGlzT2Jq
ZWN0LT5wZXJmb3JtUHV0KGV4ZWMsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBwcm9wZXJ0eU5h
bWUsIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cGVyZm9ybVB1
dChleGVjLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVm
YXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJ
bmRleENvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpOyAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGVyZm9y
bURlZmF1bHRQdXQgPSBbJl0gKCkgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+
dGFyZ2V0KCk7CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gc2hvdWxkVGhyb3c7CiAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgaXNTdHJpY3RNb2RlKTsgLy8gV2Ug
bXVzdCBwcmVzZXJ2ZSB0aGUgInRoaXMiIHRhcmdldCBvZiB0aGUgcHV0QnlJbmRleC4KLSAgICAg
ICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50LmltcGwo
KSwgcHV0VmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2
bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOwogICAg
IH07Ci0gICAgcGVyZm9ybVB1dChleGVjLCBwdXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBs
KCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAgICByZXR1cm4gcGVyZm9ybVB1dChleGVjLCBwdXRW
YWx1ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKIH0KIAot
dm9pZCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNP
YmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IGI2OGNhYzQ0YmVkOTA4OTY4YjZkZmIz
NGUzOTAwMTEzZGFkNDFjNDIuLjU1NTk3OGNmNWM4MjJlOTU1YTU3OTJmZjI0OGFjYmNjZDI2YzU1
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAt
NjIsOSArNjIsOSBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBKU09iamVjdCogdGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KICAg
ICBKU1ZhbHVlIGhhbmRsZXIoKSB7IHJldHVybiBtX2hhbmRsZXIuZ2V0KCk7IH0KIAotICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleENvbW1vbihFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1
dFZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogcHJpdmF0ZToKICAgICBQcm94eU9iamVjdChW
TSYsIFN0cnVjdHVyZSopOwpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERl
bGV0ZUZ1bmN0aW9uPgogICAgIGJvb2wgcGVyZm9ybURlbGV0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFBl
cmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci0gICAgdm9pZCBwZXJmb3JtUHV0KEV4ZWNTdGF0ZSos
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIFBlcmZv
cm1EZWZhdWx0UHV0RnVuY3Rpb24pOworICAgIGJvb2wgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBK
U1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3Jt
RGVmYXVsdFB1dEZ1bmN0aW9uKTsKICAgICBib29sIHBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhF
eGVjU3RhdGUqKTsKICAgICBib29sIHBlcmZvcm1Jc0V4dGVuc2libGUoRXhlY1N0YXRlKik7CiAg
ICAgYm9vbCBwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggMTliZjFj
NTZkMzA3NTI1OWEyNDFhOGM1NTk2NGQ4ZTIxZTNiZTBjZi4uNDUwMTY5OTU4ZjUxYTk5NzU2NDI2
Y2U1M2FlZjYxMzdmNWVkYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5
cyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2Yo
RXhlY1N0YXRlKik7CiAKIH0KQEAgLTY3LDYgKzY4LDcgQEAKICAgICBpc0V4dGVuc2libGUgICAg
ICAgICAgICAgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZSAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCiAgICAgb3duS2V5cyAgICAgICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RPd25L
ZXlzICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHByZXZlbnRFeHRl
bnNpb25zICAgICAgICByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgICBzZXQgICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdE9iamVj
dFNldCAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgc2V0UHJv
dG90eXBlT2YgICAgICAgICAgIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZiAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgogQGVuZAogKi8KQEAgLTE5Nyw2ICsxOTksMjggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3Vs
dCkpOwogfQogCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0
LnNldAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICBKU09iamVjdCogdGFy
Z2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICBKU1ZhbHVlIHJlY2VpdmVyID0gdGFyZ2V0OworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPj0gNCkKKyAgICAgICAgcmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVudCgzKTsK
KworICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFwcGVuIGlu
IHN0cmljdCBtb2RlLgorICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2U7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIGlzU3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+cHV0KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudCgy
KSwgc2xvdCkpKTsKK30KKwogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmlu
ZGV4IDRmZGFlYjRhNDlhOWM3YjFiNTFjYmY1M2RjY2QwMmU0ZTA1YTJkNTAuLjM4YzliOTM1NDkx
YmJiODA5OWZmMmFjN2E3MjJiMDUwMDM1NGNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtMTQ3LDE2ICsxNDcsMTYgQEAgc3RhdGlj
IHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGgKICAgICBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBmYWxz
ZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKLSAgICAgICAgYXNSZWdFeHBPYmplY3QoY2VsbCkt
PnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRleChleGVjLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUo
YXNSZWdFeHBPYmplY3QoY2VsbCksIHNsb3QuaXNTdHJpY3RNb2RlKCkKICAgICAgICAgICAgID8g
cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0CiAgICAgICAgICAgICA6IHJlZ0V4cE9iamVj
dFNldExhc3RJbmRleE5vblN0cmljdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9Ci0gICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNT
dGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYTYyNmQyOTEyZWE4ZWE4ZjI1NDNmNTE3ODI2MGUy
ZjhmZDVlN2I1Ny4uYjk0MWVlOTBkNTA1NGE1MjkxMmM1N2ZmNTAzMDBiZGQ0NjhlNzAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTQxLDIw
ICs0MSwyNiBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgdm9pZCBzZXRSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHIpIHsgbV9yZWdFeHAuc2V0KHZt
LCB0aGlzLCByKTsgfQogICAgIFJlZ0V4cCogcmVnRXhwKCkgY29uc3QgeyByZXR1cm4gbV9yZWdF
eHAuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IGxhc3RJbmRleCkKKyAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBsYXN0SW5kZXgpCiAgICAgewogICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3Jp
dGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkpOwotICAgICAgICBpZiAoTElLRUxZKG1fbGFz
dEluZGV4SXNXcml0YWJsZSkpCisgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJc1dyaXRh
YmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFycmllcihq
c051bWJlcihsYXN0SW5kZXgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgdm9pZCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRUaHJvdykKKyAgICBib29sIHNldExhc3RJbmRl
eChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbGFzdEluZGV4LCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQorICAgICAg
ICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFz
dEluZGV4LnNldChleGVjLT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwotICAgICAgICBlbHNlIGlm
IChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBKU1ZhbHVlIGdldExhc3RJbmRleCgpIGNvbnN0CiAgICAgewpAQCAt
NjUsNyArNzEsNyBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cAppbmRleCA5YTVkYTgzOTU3YzMyNGU4ZGFmNDAyNWRmNDE0OTUyZDg0YzA1NzM5Li5jOGUwMDNi
Zjg1OTgyNjFiOTM2MGQ3Y2I2YjYxYjhiN2I3MmVhNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtODgsNyAr
ODgsNyBAQCBTdHJ1Y3R1cmUqIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
Citib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCB2b2lk
IFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGFycmF5LCB1bnNpZ25lZCBpLAogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAg
ICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGVudHJ5LnB1dChleGVjLCBh
cnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gZW50cnkucHV0KGV4
ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwg
dW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0
SW5kZXhNb2RlIG1vZGUpCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCB2b2lkIFNwYXJzZUFycmF5RW50
cnk6OmdldChQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKEJhc2U6OmdldCgpLCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9pZCBT
cGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
U3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRo
cm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBzZXQoZXhlYy0+dm0oKSwgbWFw
LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgY2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hv
dWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIGNhbGxT
ZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8g
U3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50
cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA3NTRiNTNkOWQ2MDFkZjJh
Y2Q3YmNhZjJlOTRhZWY2ZDMzN2RmYTIuLmY3MWRjOTk0ZTg5NGE3MjgzYTU3MmIzMzI2YzllODc2
MWI5MjJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNwYXJzZUFycmF5RW50
cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKIAogICAgIHZvaWQgZ2V0KEpTT2Jq
ZWN0KiwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICAgdm9pZCBnZXQoUHJvcGVydHlEZXNjcmlw
dG9yJikgY29uc3Q7Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBi
b29sIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1h
cCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTVmFsdWUgZ2V0Tm9uU3BhcnNl
TW9kZSgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTEwNiw3ICsxMDYs
NyBAQCBjbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBvZiB0
aGUgbWFwCi0gICAgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEVudHJ5KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
IGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSk7CiAgICAgQWRkUmVzdWx0
IGFkZChKU09iamVjdCosIHVuc2lnbmVkKTsKICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVkIGkp
IHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDA5ODhkNmQwNjkwMjk4OTA0ZWQ1OTlhMWRlODhj
N2YzZDA0NTRhM2QuLmMyODdlZjhlMGUyNmM2NTZlYWFkYzJmZWU3MzgwNGJhMDY0YzgwYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
NjAsMjUgKzYwLDI1IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgU3Ry
aW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihj
ZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBKU09i
amVjdDo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdyk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2ZkZjFk
YTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCArNDksOCBA
QCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggY2E3OTEzMmQ1ODNmZDVkZDRmOTUz
ZDg5MWQ2ZjYxMTdmYmVmODAwOC4uZTM0ZmNhODFjYzhkYzI1NmNmM2JjODNlNjkzM2MzMzk2Zjk0
YzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3Nyw3ICsxMDc3
LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcudGFy
Z2V0X21ldGFfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Jl
ZmxlY3RfUmVmbGVjdC5zZXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5w
cm90b3R5cGVbU3ltYm9sLm1hdGNoXS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnJl
cGxhY2VdLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA1NGFjYjdiNWViNjJkYTk1Yjg1YTU5
ODc3ODZlMTJiMzYxZTVhOGQzLi40NjllNDExYjNiMDJmNTUwYzY0Zjc1YmE3MjZiNTFlM2FlM2E0
YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBib29sIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0NTU1N0eWxl
RGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVz
dWx0KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5m
by5wcm9wZXJ0eUlEKQpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7
Ci0gICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgcHJvcFZhbHVl
LCBpbXBvcnRhbnQsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSB3cmFwcGVkKCkuc2V0UHJvcGVydHlJ
bnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCAyMjcx
ZmQ5YWI5YTdjYWQwZTNhM2I1OGM5YjkwZTM4N2YwODA5NzI5Li42MmI3ZTNmY2JjZmI5OGZhYjI3
ZTk5NDhmZmMyNThkYWNhZmZlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgSlNE
T01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduCiAgICAgcmV0dXJuIGRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpKTsKIH0KIAotYm9vbCBKU0RPTVN0cmluZ01hcDo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgaWYg
KHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw2
ICs4NSw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgd3JhcHBlZCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlO
YW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwor
ICAgIHB1dFJlc3VsdCA9ICFlYzsKICAgICByZXR1cm4gIWVjOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAxOWZjYTI1MDU5YjU2
Njk4MWQ4ZDI4ZDQ3ZDU5MzY3ZDY0ZGJkZDcyLi45Y2U4ODM4NWVlYTdjZmNjOTkzYjFiOWU3MGQx
OTgwYzZjNjgxNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBk
YXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChtX3dyYXBwZWQtPmRvY3VtZW50KCkpOwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwor
ICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywg
ZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlz
LCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIHB1dFJlc3Vs
dCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NV2luZG93QmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggODhlMmYxYThjMTI3MjgwMmM0NmFjYzY2NmYw
N2Q0ZGM2ZTM5YmY3Mi4uMTZiYjBkMGE5YWQ0ZjJlYjUyM2IzNzRjNmU3OGQ3Yjg2OWYyOTc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtMzQyLDMyICszNDIsMzUgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAgICByZXR1
cm4ganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3ROYW1lZEl0ZW1HZXR0ZXIodGhpc09iamVj
dCwgKmZyYW1lLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwgc2xvdCk7CiB9
CiAKLXZvaWQgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRv
dyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZTsKICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09i
amVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8vIFdlIG9ubHkgYWxs
b3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4uCi0gICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uKQotICAgICAg
ICAgICAgbG9va3VwUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCwgdmFsdWUsICpz
X2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRoaXNPYmplY3QtPnByaW50RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubG9jYXRpb24pIHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAobG9va3VwUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCwgdmFs
dWUsICpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCwgcHV0UmVzdWx0KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHRoaXNPYmplY3QtPnByaW50RXJyb3JNZXNzYWdlKGVycm9yTWVz
c2FnZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
IAotdm9pZCBKU0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSB8fCAhQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEJhc2U6OnB1
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cisg
ICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA5ZGZiYjRkNTNlZmViYzdkMzMzZDkzNGMxODU1MTUwZTA2NjM5
MTNlLi4yMjllNjgzOTk4ZTM5MmU1MTY3NDhlNjI1NDdmZWZmOTg0ZWI4N2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTEFwcGxldEVs
ZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wg
SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0
b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAgcmV0dXJu
IHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywg
c2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcApp
bmRleCBhMmU5MTgzMTBiMWVkYTQ5ZTE3YjVkMDgwYjhjNDQ5ZTExOGYwMWQyLi45MTlmNjg2NjJh
MTFiNTgyYWRhZWIwODJhZmM1MGJkNzI1YmE3ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkg
KzM4LDkgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW0KICAgICByZXR1cm4gcGx1Z2luRWxlbWVu
dEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxFbWJlZEVsZW1lbnQsIEJhc2U+KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MRW1iZWRFbGVtZW50
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MRW1iZWRF
bGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVz
dWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9t
UHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9
CiAKIENhbGxUeXBlIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxs
LCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDgzZjk4ZjdmN2NjM2Qx
MGI1MTMxMDZkNWM2MjljNTY0NmRjZjcxNmYuLjRhODY0N2Y4OWViYzcwMDcyOWVjODMwY2E2ZGFj
OWI5ZThlNzMxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNI
VE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3Q8SlNIVE1MT2JqZWN0RWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICBy
ZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0
aGlzLCBzbG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBK
U0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAKaW5kZXggYjMzYWQ0ZjViMTFkZjM5OTdkNDUzMGVlYzcyMTU2YmZjNTAxMzI4MC4uMDll
YWYxNzU4ZWM2MTBjYWJlOTNhMjliNjZmMDU4NTM3MmFlNzcxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTYwLDggKzYwLDkgQEAg
Ym9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xv
Y2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNMb2Nh
dGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3Vs
dCkKIHsKKyAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVk
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1
LDcgKzc2LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBjb25zdCBIYXNoVGFibGVW
YWx1ZSogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVu
dHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICBpZiAoc2FtZURv
bWFpbkFjY2VzcykKLSAgICAgICAgICAgIEpTT2JqZWN0OjpwdXQodGhpcywgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICBwdXRSZXN1bHQgPSBKU09iamVjdDo6
cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEzNyw4ICsxMzgsOSBAQCBKU1ZhbHVlIEpTTG9jYXRpb246
OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUoJnN0YXRlLCB3cmFwcGVkKCkudG9TdHJpbmcoKSk7CiB9CiAKLWJvb2wgSlNMb2Nh
dGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0xvY2F0aW9u
UHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsK
KyAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICByZXR1cm4gKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS52YWx1ZU9mKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKaW5kZXggY2QxODNmNjhjOGI0
OGYyYmE1NWI4NjllYjkwNWNkNjZkM2I2YjM2OS4uMmEzNGY1YWRiYjM5N2ZjNzBkOWY0MzZlNGVm
ZGE5MDE0N2IyYjE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCkBAIC0xMTksMTQgKzExOSwxNCBAQCBib29s
IHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHBsdWdpbkVs
ZW1lbnRDdXN0b21QdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBKU0hUTUxFbGVtZW50KiBlbGVt
ZW50LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBKU09i
amVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQpOwog
ICAgIGlmICghc2NyaXB0T2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFz
Y3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBzY3JpcHRPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChzY3JpcHRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHB1dFJlc3VsdCA9
IHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHNjcmlwdE9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgK
aW5kZXggZGRhM2QwYzlmNWY4MDVmMzE3MDc1MzhiZDViODg5NTg5YzlkZDI1Ni4uNDExNjYxZTZm
YWU1ZjM5NjI4Y2VmYTlhNWVmN2MxOGFjYjY1MjliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKQEAgLTQxLDcgKzQx
LDcgQEAKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosCiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYsIEpT
SFRNTEVsZW1lbnQqKTsKLSAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50Kiwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxF
bGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpOwogICAgIEpT
Qzo6Q2FsbFR5cGUgcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqLCBKU0M6
OkNhbGxEYXRhJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHlwZSwgY2xhc3MgQmFzZT4gYm9v
bCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBz
bG90LCBUeXBlKiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Rv
cmFnZUN1c3RvbS5jcHAKaW5kZXggM2FhN2U5NDM4ZWNkMTU5YjViZjBjOWJmNWEyZTM1ZWRmY2Q3
MGI2MS4uOWY1MjU2MWI4NTgzMjA1ODBkY2I4M2YxYTdjNWYxYWY4MjNhOTZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBK
U1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNTdG9yYWdl
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAg
ICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhh
dmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1lLgogICAgIC8vIFNpbmNlIGhhc1Byb3Bl
cnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZv
b2xlZCwgd2UgbmVlZCB0byBjaGVjawpAQCAtMTE5LDEzICsxMTksMTQgQEAgYm9vbCBKU1N0b3Jh
Z2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZQogICAgICAgICAvLyBpZiB0cnVlLCB0ZWxscyB0aGUgY2FsbGVyIG5vdCB0byBl
eGVjdXRlIHRoZSBnZW5lcmljIHB1dCkuIEl0IGRvZXMgbm90IGluZGljYXRlIHdoZXRoZXIKICAg
ICAgICAgLy8gcHV0RGVsZWdhdGUoKSBkaWQgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBvcGVy
YXRpb24gb3Igbm90ICh3aGljaCBpdCBkaWRuJ3QgaW4gdGhpcwogICAgICAgICAvLyBjYXNlIGR1
ZSB0byB0aGUgZXhjZXB0aW9uKS4KKyAgICAgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdy
YXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmlu
Z1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLQorICAgIHB1dFJl
c3VsdCA9ICFlYzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyN2I0YmRiOThiZGYw
YzJiNThlMmIyMjE1N2VkNGY5YWU5MmZlZWY5Li5kOTVlMTNlNGI0NDI3OTVjNDhiM2FkNGNkNGU0
MTQxYTJkYmZjMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTA0MSw5ICsxMDQxLDkgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJG92ZXJyaWRlc1B1dCkgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bU5hbWVkU2V0dGVyIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTtcbiIp
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9
OwogICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVudCkgewpAQCAtMjE0NCwxMiArMjE0NCwxMyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0p
IHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXRE
ZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJv
b2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gcHV0UmVzdWx0O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAg
ICB9CiAKQEAgLTI1NTgsMjYgKzI1NTksMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
IAogICAgIGlmICgkaGFzQ3VzdG9tU2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBz
dGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFs
dWUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVn
YXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1
bHQ7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0
dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0
dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWdu
ZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKQEAgLTI1ODUsMTggKzI1ODcsMTkgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleCwgdmFsdWUpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3Qt
PnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQp
KVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gcHV0UmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwg
aW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2NDksOCAr
NDY1Miw4IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3Rv
dHlwZSJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wg
cHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKICAgICB9CiAKICAgICAjIEN1
c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRl
eCAyN2Q2MmM0OGM0YzI5MGE5YTY0ZjIzYTZkZDFlMGQ1NGI5NjgxMTMxLi5mNWFjMGJhOTQzZTlm
NzBjNjllM2I0NzVlZWRmMzYzZDI0ZTUxYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAt
NjA2LDIzICs2MDYsMjUgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEUKICAgICBkb21PYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpOwogfQogCi12b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBpZiAodGhpc09iamVjdC0+cHV0
RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKQotICAgICAgICByZXR1
cm47CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAodGhpc09iamVjdC0+cHV0
RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJlc3VsdCkpCisg
ICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Rlc3RJbnRlcmZhY2U6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNUZXN0SW50ZXJmYWNl
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCwgc2hvdWxkVGhyb3cpOwotICAgIGlmICh0aGlzT2JqZWN0LT5w
dXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmICh0aGlzT2JqZWN0LT5w
dXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSkK
KyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0
YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmlu
ZGV4IGVhNmNlYzYyZDVmZmU1ZjRiYzAxODYwMTE0M2ZjNTQ4ZGEwMDUwZGMuLjI0YzkwOGYwMzQx
YmU0ZjUxZDQzZDUyZTExMmRiZWNiMzQyZTNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0
LDkgKzQ0LDkgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
LSAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJ
bmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfcnVudGltZS5jcHAKaW5kZXggYjIzMmIwNjVlOTQyNmE0NjcwODE2ZDVmYjA5YWEwZTY3Njhh
NTdkYy4uM2VmYTcxNDIxOTFlMjY5NDRjMThjNTM1NWEwY2IxM2U5MWFmNmExZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUgQ0Zp
ZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBp
bnN0KSBjb25zdAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi12b2lkIENGaWVsZDo6
c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3Qs
IEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkgY29u
c3QKIHsKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdCk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3RhbmNlLT5nZXRPYmpl
Y3QoKTsKQEAgLTY5LDE0ICs2OSwxNyBAQCB2b2lkIENGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNl
KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3QsIEpTVmFsdWUgYQogICAgICAg
ICBOUFZhcmlhbnQgdmFyaWFudDsKICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhl
YywgYVZhbHVlLCAmdmFyaWFudCk7CiAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAg
ICAgICAgewogICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4
ZWMpOwotICAgICAgICAgICAgb2JqLT5fY2xhc3MtPnNldFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRl
bnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5fY2xhc3MtPnNl
dFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRlbnRpZmllciwgJnZhcmlhbnQpOwogICAgICAgICAgICAg
Q0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgICAg
IH0KIAogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJnZhcmlhbnQpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAppbmRleCAxMDY3MmVkOTgxYmY5YjY4NDhmNTZkMzMz
MzQ3MmNlYmM3ZWFkODk3Li4yMTlmZWZlZTQzMWZkNGJlNzMxMjY5NmU5OTQwNWFkODg2ZTRkYTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBDRmllbGQgOiBwdWJsaWMgRmllbGQgewogICAgIENGaWVsZChOUElkZW50aWZpZXIgaWRlbnQp
IDogX2ZpZWxkSWRlbnRpZmllcihpZGVudCkgeyB9CiAKICAgICBKU1ZhbHVlIHZhbHVlRnJvbUlu
c3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1Zh
bHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBfZmllbGRJZGVudGlmaWVyOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IDAwMjk0ZmFkZDA1OGFk
OGQwM2RmN2FiMGNjNTI0ZGZiNWRmMjI2YjIuLjVmZTg1ZjVmNGMxM2RiOGYxYjdiZmM1ZjA3NWMw
YjlhNWRjOWRlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNTIs
NyArNTIsNyBAQAogY2xhc3MgRmllbGQgewogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRv
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIH5GaWVsZCgpIHsgfQogfTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFz
cyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbmNlPiB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9Cisg
ICAgdmlydHVhbCBib29sIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0KQEAgLTEyNCw3ICsxMjQsNyBA
QCBjbGFzcyBBcnJheSB7CiAgICAgZXhwbGljaXQgQXJyYXkoUmVmUHRyPFJvb3RPYmplY3Q+JiYp
OwogICAgIHZpcnR1YWwgfkFycmF5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgaW5kZXgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgo
KSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgK
aW5kZXggNzY4OTY2YjQ4OThhMTRiN2MzZTcwZTlmOTA1NGNlYTE4ZDlmNjYwZi4uYjU4ZDFiNjI5
ZjQ4MTA0MTU3YTYyODkxYjIyZTllMDUwMmZhYWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgT2JqY0ZpZWxkIDog
cHVibGljIEZpZWxkIHsKICAgICBPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSk7CiAgICAgCiAg
ICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVj
U3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVl
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJdmFyU3RydWN0UHRyIF9pdmFyOwpAQCAtNzgsOCAr
NzgsOCBAQCBjbGFzcyBPYmpjQXJyYXkgOiBwdWJsaWMgQXJyYXkgewogcHVibGljOgogICAgIE9i
amNBcnJheShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW50IGluZGV4
LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhl
Y1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFs
dWUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGludCBpbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3Ro
KCkgY29uc3Q7CiAgICAgCiAgICAgT2JqZWN0U3RydWN0UHRyIGdldE9iamNBcnJheSgpIGNvbnN0
IHsgcmV0dXJuIF9hcnJheS5nZXQoKTsgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIE9iamNG
YWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3Rh
bmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0
YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCmluZGV4IGZlYzEwOThlZGRkMzZhM2MyZDc1MmQ1NDkxZGVjYTIzNWNhMDIxZjcu
LjAwZWRiOTYyNTM1OGY5MjM0MjVkNDU2YjU4ODZhMmY3M2NlZDZiNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0
aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKICAgICByZXR1cm4gW3dlYlNjcmlwdE9iamVjdENsYXNzKCkgX2NvbnZlcnRWYWx1ZVRv
T2JqY1ZhbHVlOnZhbHVlIG9yaWdpblJvb3RPYmplY3Q6cm9vdE9iamVjdC5nZXQoKSByb290T2Jq
ZWN0OnJvb3RPYmplY3QuZ2V0KCldOwogfQogCi12b2lkIE9iamNGaWVsZDo6c2V0VmFsdWVUb0lu
c3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVl
IGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25z
dAogewogICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxjb25zdCBPYmpjSW5zdGFu
Y2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsKICAgICBpZCB2YWx1ZSA9IGNvbnZlcnRWYWx1
ZVRvT2JqY09iamVjdChleGVjLCBhVmFsdWUpOwpAQCAtMTM4LDkgKzEzOCwxMSBAQCB2b2lkIE9i
amNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFu
Y2UqIGluc3RhbmNlLCBKUwogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAg
ICAgICAgICAgICBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShl
eGVjKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChOU0V4
Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0xNTIsMTYgKzE1NCwxNiBAQCBP
YmpjQXJyYXk6Ok9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIgYSwgUmVmUHRyPFJvb3RPYmplY3Q+
JiYgcm9vdE9iamVjdCkKIHsKIH0KIAotdm9pZCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9v
bCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5k
ZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewogICAgIGlmICghW19hcnJheS5nZXQoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7CiAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRd
KSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIC8vIEFsd2F5cyB0cnkg
dG8gY29udmVydCB0aGUgdmFsdWUgdG8gYW4gT2JqQyBvYmplY3QsIHNvIGl0IGNhbiBiZSBwbGFj
ZWQgaW4gdGhlCkBAIC0xNzAsOCArMTcyLDEwIEBAIHZvaWQgT2JqY0FycmF5OjpzZXRWYWx1ZUF0
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkKIAog
ICAgIEB0cnkgewogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUub2Jq
ZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNh
dGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRp
b24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0yMjEsOCArMjI1
LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIE9iamNGYWxsYmFja09iamVj
dEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKIHsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGVmOTkyNDgy
Nzg2ZjcyNWQ3MGVlMWVkYzNlMDcwY2Y2YjdmOGNjNWUuLmM1YjNjNGY3ZTdhMjE3OTI3MTIxYjNj
N2U3YzBmMWE0OTY3MWI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKQEAgLTExMSwzMSArMTExLDI5IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywKICAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
aW5kZXgsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9y
IikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgewotICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVl
QXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZh
bHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgIAotICAgIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK2Jv
b2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKIHsKICAgICBSdW50aW1lQXJy
YXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGlu
ZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAg
ICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgs
IHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRW
YWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKIGJvb2wgUnVudGltZUFycmF5OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA1OGJhMDU5NmU2NDkxYTg0NDYyYmRjNmVlZDg2
NGM1OWEyNTkyZWMxLi4wMThjMTMyNzhkYmEzZGQwMzE3MWU1M2VmYzBhZDdkZjBlMTA3ZTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTU2LDggKzU2LDggQEAgY2xh
c3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IDczNjZmOTI1ZWM3MWNiMzYxMDIwODRiYzEx
NDQ2ZTk2ODhlM2IyMjguLmU0MzMxZmYyNmM4Nzg2Y2FkYmE0MDlhOWZhY2RiNjg4MWNjYmI4ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMTYxLDI1ICsx
NjEsMjcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXIKICAgICByZXR1cm4gaW5zdGFuY2UtPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKICAgICBpbnN0YW5jZS0+
YmVnaW4oKTsKIAogICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgorICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgRmllbGQgKmFGaWVsZCA9IGluc3RhbmNlLT5nZXRDbGFz
cygpLT5maWVsZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOwogICAgIGlmIChh
RmllbGQpCi0gICAgICAgIGFGaWVsZC0+c2V0VmFsdWVUb0luc3RhbmNlKGV4ZWMsIGluc3RhbmNl
LmdldCgpLCB2YWx1ZSk7CisgICAgICAgIHJlc3VsdCA9IGFGaWVsZC0+c2V0VmFsdWVUb0luc3Rh
bmNlKGV4ZWMsIGluc3RhbmNlLmdldCgpLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIWluc3RhbmNl
LT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCi0g
ICAgICAgIGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBpbnN0YW5jZS0+ZW5kKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCmluZGV4IGIzYjY0MGFjYzU0ZjM0OGRjNWFmZTkyYzVmMzhmZTYyMjk0
ODVmODEuLjgxZDRlYmQzYjRkYmI3MDk5MTE1ZGExMDI4MmIyOWZiZmZiMTg2ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKaW5kZXggMTNl
MzJiYTYyMGUzNTA3ZTA0MmE5MGU4MTc0NDNkOTNhZjYzYjYwMi4uYWZiYTEwMjBkOTVkYWViNjNl
MTdjN2ZiOTMyMTQxYWU4ZTk0ZDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQcm94eUlu
c3RhbmNlIDogcHVibGljIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlIHsKICAgICBKU0M6OkJpbmRp
bmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpT
VmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZp
ZWxkKikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OworICAgIGJvb2wg
c2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxk
KiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKICAgICAKIAogICAgIE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eSogaW5zdGFuY2VQcm94eSgpIHsgcmV0dXJuIG1faW5zdGFuY2VQcm94eTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5k
ZXggOWNkMGZiYzFiNGMyNTRkYTU0YzQxNDZlZGUyMDU4ZDdjYzBhZGMzMi4uNjcxNGU4Y2Y0YWIy
NzUzNjBkZDZhMDk5MTQ2YzU0ZDMwNzVhYWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogICAgIAogICAgIHVpbnQ2NF90IG1fc2VydmVySWRl
bnRpZmllcjsKIH07CkBAIC05MSw5ICs5MSw5IEBAIEpTVmFsdWUgUHJveHlGaWVsZDo6dmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPmZp
ZWxkVmFsdWUoZXhlYywgdGhpcyk7CiB9CiAgICAgCi12b2lkIFByb3h5RmllbGQ6OnNldFZhbHVl
VG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNW
YWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHZhbHVlKSBj
b25zdAogewotICAgIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSkt
PnNldEZpZWxkVmFsdWUoZXhlYywgdGhpcywgdmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMsIHRo
aXMsIHZhbHVlKTsKIH0KIAogY2xhc3MgUHJveHlNZXRob2QgOiBwdWJsaWMgSlNDOjpCaW5kaW5n
czo6TWV0aG9kIHsKQEAgLTQxNiwxMCArNDE2LDEwIEBAIEpTQzo6SlNWYWx1ZSBQcm94eUluc3Rh
bmNlOjpmaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkKSBjb25z
CiAgICAgcmV0dXJuIG1faW5zdGFuY2VQcm94eS0+ZGVtYXJzaGFsVmFsdWUoZXhlYywgKGNoYXIq
KUNGRGF0YUdldEJ5dGVQdHIocmVwbHktPm1fcmVzdWx0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3Ro
KHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSkpOwogfQogICAgIAotdm9pZCBQcm94eUluc3RhbmNlOjpz
ZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVl
IHZhbHVlKSBjb25zdAorYm9vbCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogewogICAg
IGlmICghbV9pbnN0YW5jZVByb3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKICAgICB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgUHJveHlGaWVsZCo+KGZpZWxkKS0+c2VydmVySWRlbnRpZmllcigpOwogICAgIHVpbnQz
Ml90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+bmV4dFJlcXVlc3RJRCgpOwpAQCAtNDM0
LDEwICs0MzQsMTEgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHYKICAgICBpZiAobV9pbnN0YW5j
ZVByb3h5KQogICAgICAgICBtX2luc3RhbmNlUHJveHktPnJlbGVhc2VMb2NhbE9iamVjdCh2YWx1
ZSk7CiAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgd2FpdEZvclJlcGx5PE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXF1ZXN0SUQpOwogICAgIE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOworICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIFByb3h5SW5zdGFuY2U6OmludmFsaWRhdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCmluZGV4IDUzNzdmOTFlNDJmNWRlNDdiOGYwMTcyOGRkZGIzZDc2MDEwYzc5
MjQuLjAxYTQ2MDUxOWE4YzhjNDFlMDIzYzJkOWMxODI5ZDY0N2M2MTk0MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5jcHAKQEAgLTI5NywyNyArMjk3LDI3IEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6
OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdCkg
ewogICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgTlBJZGVudGlmaWVyIG5wSWRl
bnRpZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSk7CiAgICAg
Ly8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFucElkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICgh
dGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSB8fCAhdGhpc09iamVj
dC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0
LCBucElkZW50aWZpZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdGhyb3cgYW4g
ZXhjZXB0aW9uIGhlcmU/Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9w
ZXJ0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBOUFZh
cmlhbnQgdmFyaWFudDsKICAgICB0aGlzT2JqZWN0LT5tX29iamVjdE1hcC0+Y29udmVydEpTVmFs
dWVUb05QVmFyaWFudChleGVjLCB2YWx1ZSwgdmFyaWFudCk7CkBAIC0zMjcsOSArMzI3LDEwIEBA
IHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgLy8gdGhlIGNhbGwgaGFzIGZpbmlzaGVkLgog
ICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHByb3RlY3Rvcih0aGlzT2Jq
ZWN0LT5tX29iamVjdE1hcCk7CiAKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIHsKICAg
ICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6
Y29tbW9uVk0oKSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0
UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7
CisgICAgICAgIHJlc3VsdCA9IHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJv
cGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7CiAK
ICAgICAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3Rh
dGUoZXhlYyk7CiAKQEAgLTMzNyw2ICszMzgsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgog
ICAgIH0KIAogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmdmFyaWFudCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCmluZGV4IGE2YmJmN2M4N2M0Yzk4YTQ2Y2U1OWVjZWZiMzY2MGUwN2VhYjI0ZTYuLjhiYWZl
YjA2MGEyMTA2NmQ4ZWFhNjA4NzRjMDNhYzk5ZjBjZjRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApAQCAt
ODUsNyArODUsNyBAQCBjbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273089</attachid>
            <date>2016-03-05 09:49:36 -0800</date>
            <delta_ts>2016-03-05 12:25:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160306024920.patch</filename>
            <type>text/plain</type>
            <size>191501</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YmE2MTFmNmE4M2M0MzcyYWNlMWVmYTA4N2Q3Mjc1NmY0MGI1MTg5Li44ZDRhMzM3NGZhY2IzMGVm
M2Q4NzNiZTA3NzM4M2UzYzNiMDViOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNTAgQEAKIDIwMTYtMDMtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgUmVmbGVjdC5zZXQuCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCBpcyBS
ZWZsZWN0LnNldCByZXF1aXJlcyBib29sZWFuIHJlc3VsdCBvZiBbW1NldF1dLAorICAgICAgICB0
aGlzIGlzIG5vdCBwcm9wYWdhdGVkIGluIHRoZSBwcmV2aW91cyBKU0MgcHV0IGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHV0IGFuZCBwdXRCeUluZGV4
IHNpZ25hdHVyZSBmcm9tIGB2b2lkIHB1dCguLi4pYCBhbmQgYHZvaWQgcHV0QnlJbmRleCguLi4p
YCB0byBgYm9vbCBwdXQoLi4uKWAgYW5kIGBib29sIHB1dEJ5SW5kZXgoLi4uKWAsCisgICAgICAg
IG1vcmUgY29uc2lzdGVudCBzdHlsZSB0byB0aGUgRUNNQTI2MiBzcGVjJ3MgW1tTZXRdXS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5
SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToK
KyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAg
ICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXQpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpwdXRJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAg
KiBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0
OjpwdXQpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAg
ICAgKiBydW50aW1lL0pTTm90QW5PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dFNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0TWF5QmVJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpz
eW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2lu
dFNldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdh
dGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6
OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1l
L1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQp
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlP
YmplY3Q6OnB1dEJ5SW5kZXhDb21tb24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0
QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6c2V0TGFzdEluZGV4KToKKyAgICAgICAgKiBydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVl
TWFwOjpwdXRFbnRyeSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6Cisg
ICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6Cisg
ICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKworMjAxNi0wMy0w
NSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbRVM2
XSBTdXBwb3J0IFJlZmxlY3QuY29uc3RydWN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczMzAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRkMmIzY2VmNDhiODA2
ZDYwNThiODg4NDQzYTkwZWZkOGEyNDRlOTMuLmU5OTFhNTczMjNlNjA5YzllZTIwMDZhYzEyZmVk
MDY2MTgxZjRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MSBAQAogMjAxNi0wMy0wNSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgUmVmbGVjdC5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxFbWJl
ZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPYmpl
Y3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVjdEVsZW1l
bnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9yYWdl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0RGVsZWdhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEludGVyZmFjZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6
cHV0QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVudGltZS5jcHA6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgICogYnJp
ZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNl
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0VmFsdWVBdCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dCk6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6
OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6cHV0KToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKworMjAxNi0wMy0wNSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbRVM2XSBTdXBwb3J0IFJl
ZmxlY3QuY29uc3RydWN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDczMzAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA0OTgzOTZmZDBjZjlkNjQ4MmI5
NmQ5ZTcwODhlZjY5MGIwNTEzNWIuLmFhZmM5NDYwZDBlYTgwMzMwZDYzYmZjNDA4NGM5OGFiNDQ4
Y2U1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNi0wMy0wNSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgUmVmbGVjdC5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFzIHRoZSBzYW1lIHRvIE5QSlNPYmplY3QsIHdlIGp1c3QgcHJvcGFnYXRlIHRo
ZSByZXR1cm5lZCB2YWx1ZSBvZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldFByb3Bl
cnR5LgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oOgorICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5z
dGFuY2U6OnNldEZpZWxkVmFsdWUpOgorCisyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtFUzZdIFN1cHBvcnQgUmVmbGVjdC5jb25z
dHJ1Y3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NzMzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmUyNDI1YWVhNTE2N2YyMzQ2ZGUwNjkzNmVlODEwNzhlZTVj
NjM5Yy4uZjM3Y2YxNDdmMzc2YWIxNDI3YThhNmFjZjk5ZDU3MzM2OTk0ODZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlBKU09iamVjdDo6
c2V0UHJvcGVydHkgbWF5IGNhbGwgYG1ldGhvZFRhYmxlKCktPnB1dGAgb3BlcmF0aW9uLCBidXQg
d2UgaW50ZW50aW9uYWxseSBkbyBub3QgcHJvcGFnYXRlIGl0IHRvIHRoZSBjYWxsZXIncyA6OnB1
dC4KKyAgICAgICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIGp1c3QgdXNlIHRo
ZSByZXN1bHQgb2YgOjpzZXRQcm9wZXJ0eSBjYWxsLgorICAgICAgICBUaGlzIGlzIGB0cnVlYCB3
aGVuIDo6c2V0UHJvcGVydHkgYXR0ZW1wdHMgdG8gY2FsbCBgbWV0aG9kVGFibGUoKS0+cHV0YC4K
KyAgICAgICAgSW4gOjpzZXRQcm9wZXJ0eSwgYWZ0ZXIgY2FsbGluZyBgbWV0aG9kVGFibGUoKS0+
cHV0YCwgOjpzZXRQcm9wZXJ0eSBmdW5jdGlvbiBjbGVhcnMgdGhlIGV4Y2VwdGlvbiBzdGF0ZS4K
KyAgICAgICAgU28gdGhpcyBpcyBub3QgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBzaW1wbGUg
ZGF0YSBwcm9wZXJ0eSBzdG9yZS4gUmF0aGVyLCB0aGlzIGlzIGxpa2UgdGhlIGFjY2Vzc29yLgor
ICAgICAgICBJbiBFQ01BMjYyIFtbU2V0XV0sIGl0IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
IHNldHRlci4gU28gd2UganVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIDo6c2V0UHJvcGVy
dHkuCisgICAgICAgIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSBzZXR0ZXIgZm9yIHRo
ZSBnaXZlbiBbW1NldF1dIG9wZXJhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
OgorCisyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CiAgICAgICAgIFtFUzZdIFN1cHBvcnQgUmVmbGVjdC5jb25zdHJ1Y3QKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzMzMAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGFkZGQyMTk4NjMzOWUzYzFk
MGIxZTQwY2UyYmFlN2Y3Y2RiN2Y3NmQuLmU5NTYzZjU0Y2VhOGIyNjNiMTQzMzU2NzIxZDRjZGRk
NzljNWU0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCkBAIC0xODEsOCArMTgxLDggQEAgY2xhc3MgSlNDYWxsYmFja09iamVjdCA6IHB1YmxpYyBQ
YXJlbnQgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCmluZGV4IDk1MjAzOWRjY2I4NjIyMjBjNTM2MzRkYzZmNGNjNmE0N2U2
NWQ2ZjcuLmE1NTM3MjM0YmIzMmNhNjg2ZGQwNmIyYWZlOWEwN2E5ZDAyNTdmMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCkBAIC0yMjIsNyArMjIyLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZv
aWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0Nv
bnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yNDQsMTMgKzI0NCwxMyBAQAogICAgICAg
ICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxl
KiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChu
YW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnkt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTI2MSw3
ICsyNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI3Miw5ICsyNzIsOCBA
QAogICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXRTbG90KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
ICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8v
IHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LT5KU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dERpcmVjdChl
eGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3Bl
cnR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODQs
NyArMjgzLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9
IHRvUmVmKGV4ZWMpOwpAQCAtMzA2LDEzICszMDUsMTMgQEAKICAgICAgICAgICAgIGlmIChleGNl
cHRpb24pCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1Rh
YmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAg
ICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KHBy
b3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5LT5z
ZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwpAQCAtMzIzLDcgKzMyMiw3IEBA
CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9u
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTMzMSw3ICszMzAsNyBAQAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9u
c1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykp
IHsKICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1
bmN0aW9ucy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCBj
M2VmYmQ1NmRkNzBkZWFjYTM2MzM5MjRhOTIyOWQzNjEzOTMyMDE1Li4zNjUwMjRlODhmMjZhZTE0
NmE5ZThiYTRjYzJmNGNiZDVhMzU0YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC05OCwxNSArOTgsMTUgQEAgYm9vbCBEZWJ1
Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIERlYnVnZ2VyU2Nv
cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBEZWJ1
Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4oY2VsbCk7
CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwog
ICAgIHNsb3Quc2V0VGhpc1ZhbHVlKEpTVmFsdWUodGhpc09iamVjdCkpOwotICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIERl
YnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmVmNjBjODk5ZjdmMTQ4M2UzMmNjN2E4Mzgz
M2UwYWY5NDA0NzJkYi4uZTM0ZjQ5N2Q3ZmIzMzNhYWVlNzYwOTI0Mzg2NGYzNWMwYTc4YTUwNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBA
IC00OCw3ICs0OCw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBjNDViYmVjMTI5
YjZiN2I4MDUzZmRhMDVlNWFiMDZiOGFmODdlYzA3Li5kZGU0OWYwODk3YjhjODMyMzM4NWVmNjhm
MTk3MGRjZGEwYzczZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBA
IGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICAgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4
LCBzbG90KTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDIyYmM0M2Q5Yjk4
MjdjYjlmMWQwMjc2ZjcwOWY3ZWE2YzIxMDM3MjcuLmQzNzZiNjMxOWE5NTQwOWNlYzY5Yjg1MzEx
Y2ZiZTA1OTM4NGU0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCkBAIC00OSwxMCArNDksMTAgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVm
IENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIpKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKICAgICBHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIgZ2V0Q29uc3Ry
dWN0RGF0YTsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgUHV0RnVuY3Rpb25QdHIgcHV0OwogCi0gICAgdHlwZWRlZiB2b2lkICgqUHV0
QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1
dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUluZGV4RnVuY3Rp
b25QdHIgcHV0QnlJbmRleDsKIAogICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVu
Y3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA4MjQx
ZDZlMGMwNzU2NDQ3MWM1YTlkYTUyZTE2ZDFiYTczYmVmOTk1Li40ODFmMTZiM2U5ZWVhZmJjNTNl
N2Q1MTg0ZWM0NTQ0NzFhZDJiMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENsb25l
ZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFBybwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgYXJyYXksIG1vZGUpOwogfQogCi12b2lkIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRzOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3VtZW50cyogdGhp
c09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwpAQCAtMTc4LDExICsxNzgsMTAgQEAgdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1YK
ICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpIHsK
ICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGV4ZWMp
OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBzbG90OyAvLyBTaGFkb3cgdGhlIGdp
dmVuIFB1dFByb3BlcnR5U2xvdCB0byBwcmV2ZW50IGNhY2hpbmcuCi0gICAgICAgIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1bW15KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1
ZSwgZHVtbXkpOwogICAgIH0KICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
aWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlk
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
aAppbmRleCA4ZTcxM2Q1YzZmYTVjYTE4NDEzNGIwNTJiMmQ1ODk5YTI2NzdhMzBlLi41ZDIyMjE4
M2M5ZTcwODMyOTRiMTQxNzZkYTRlZjU2MTk3Y2JiM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFz
cyBDbG9uZWRBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAppbmRleCA2N2YxYjAzNDVkNzFiOGQzMzYy
ZjY2YmI2NWUyZGNmM2EzNWQyYWE0Li5lZGNjNmYxYjk4ZDZkYWRmODg5N2U4YWYyZmYwMjI0NDUy
OWIzZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50cy5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIEdlbmVyaWNBcmd1bWVudHMgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRl
eCA5YjE4MDAxODU3ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2ZGVlLi5kMmViMzcxMTUyMTI2
NDVjMzE2Zjc5ZDQyZTIzYjc4MGZkZGJlZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTk3LDcgKzk3
LDcgQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXZvaWQgR2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
aWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwpAQCAtMTA4LDI4ICsxMDgsMjcgQEAKICAgICAgICAgICAgIHx8IGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkgewogICAgICAgICB0aGlzT2Jq
ZWN0LT5vdmVycmlkZVRoaW5ncyh2bSk7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkdW1teSA9
IHNsb3Q7IC8vIFRoaXMgcHV0IGlzIG5vdCBjYWNoZWFibGUsIHNvIHdlIHNoYWRvdyB0aGUgc2xv
dCB0aGF0IHdhcyBnaXZlbiB0byB1cy4KLSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7CiAgICAg
fQogICAgIAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQp
OwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5k
ZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRl
bnQsIHZhbHVlLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXZvaWQgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuQWNjZXNzSW5k
ZXhRdWlja2x5KGluZGV4KSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNrbHko
dm0sIGluZGV4LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIGlu
ZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXggMmNkNjZlNWNkNDJmZDAxZGI1MmRlMGQ3NmJjZjRk
MjE5MWVmN2NiOS4uODczMDc5NGEzNDI4ZjZkNWVhOGU5YTJiOGNiYTIxNGMxN2JjODQ0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCkBAIC04
NSwxNCArODUsMTQgQEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcikKICAgICByZXR1cm4gY2FsbChleGVjLCBnZXR0
ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgQXJnTGlzdCgpKTsKIH0KIAotdm9pZCBjYWxs
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRl
ciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCitib29sIGNhbGxTZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVl
IHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNl
dHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYg
KGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsKICAgICAgICAgaWYgKGVjbWFNb2Rl
ID09IFN0cmljdE1vZGUpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBKU09iamVjdCogc2V0dGVyID0gZ2V0dGVyU2V0
dGVyT2JqLT5zZXR0ZXIoKTsKQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIGNhbGxTZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVl
IHZhbAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0
dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0
YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgYXJn
cyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBjZDIwNDAyOGVmOWNh
ZTI5ZjgyMTRmYzZiZmFmM2FlYjU1NmYzZjkxLi4yYjIyYjNlMGIwYzAwYzkyN2JmNWNiZDkwMDQ5
Y2ZlOTE4ZTUxN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGlubGluZSBHZXR0ZXJTZXR0ZXIqIGFzR2V0dGVy
U2V0dGVyKEpTVmFsdWUgdmFsdWUpCiB9CiAKIEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKTsKLUpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVy
U2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxT
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNW
YWx1ZSwgRUNNQU1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBhZmRiZTBkZTc2ZWQ3OWEyYzczNDNkYTdm
NzFiMDZhN2ViZWQxYTRmLi4yNjMzMjMzNGNjNjI0YWRiZjgzMjQ1ZjViM2ZiY2FiNzJiMzU5MGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTkwLDcg
KzE5MCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEK
LXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwog
CkBAIC0xOTgsMTMgKzE5OCwxMiBAQCB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQogICAgICAgICB1
bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZh
bHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewog
ICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRM
ZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICB9CiAKLSAg
ICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpA
QCAtNjQ0LDcgKzY0Myw4IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZTogewogICAgICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBsZW5ndGgoKTsKLSAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSwgcHV0UmVzdWx0KSkgewogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSAmJiBvbGRMZW5ndGggPCAweEZGRkZGRkZGdSkKICAgICAgICAgICAgICAgICBzZXRM
ZW5ndGgoZXhlYywgb2xkTGVuZ3RoICsgMSwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggOWYyNzM4MmRlYmQ3MTc1
YjUwOWMxZGZhNDk1MWI5ZWJkMmNiODJlNi4uY2NmM2JlZTNkY2E0YjMzYWRhMTM2YzQyZGU3MDFj
ZDZjYmE1YTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAt
MTU2LDcgKzE1Niw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCAzNTlh
ZTQ3YTUwYmU3ZWMyODAyODcwYzk2Nzc0ODQ2NDMwZTM0NGIxLi42ZGRlNGM3ZGZmY2EzMjMzMDBj
Nzg1Nzg3YTUyNzYwYWFjNTA2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzksMTggKzc5LDE2IEBAIGJvb2wgSlNBcnJheUJ1
ZmZlcjo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBK
U0FycmF5QnVmZmVyOjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAgICBKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZl
ciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4oY2VsbCk7CiAgICAgCi0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkgewot
ICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8g
d3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmJ5dGVMZW5ndGgpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmlj
dE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVy
IHByb3BlcnR5LiIpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlCdWZm
ZXI6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oCmluZGV4IGQ2MzRkNzM2M2ZlNGE1MDhiOGFiOTgwY2ZiMDY1ZjMxMWE3
YWE2ZTguLmY3Njc1MzgzNzg0NGYwYTZmYjVhYzdjNDljYTI5YTM0NTM0Mzc5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCmluZGV4IDNiZmNhZjE1MjE5OTI1YjkzZWQ3ODdmNDE1MDFjOWI3N2JiNTVi
MTEuLmQ0YjVjYzBjNDM2YjU4MWJlYjE2OTQ4Y2E3MzJmMDA2MWY2MjFjODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTE2NCwxNyArMTY0LDE1IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCi12b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojpw
dXQoCitib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAg
ICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7Ci0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKSB7Ci0gICAgICAgIHJlamVj
dChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFk
LW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKQorICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKICAgICAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6ZGVmaW5lT3duUHJvcGVy
dHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaAppbmRleCA1MjNhMjAwZmJhMmQ3NzJjMmI3M2YyZDRjNWZjNjVjNzEyZjZiOWJmLi5iMmNm
NWEyYjE5OTllNWQ3ZWEyZThhNDg3NWViZTQ3MzhlMDg4YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBiOWRkMGE0MTdkODAzYjBl
NDVkYWVjZTI4ODQ0NWVlMTJkZjU3ODM2Li5kM2M4MmZhNmI2ODIxMWNmOTZkMmZhZGU4YmExZDcx
MDMzNzFiZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcApAQCAtMTI5LDE0ICsxMjksMTIgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogCiAvLyBFQ01BIDguNy4yCi12b2lk
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5
SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwog
CiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOwpAQCAtMTQ3LDcgKzE0NSw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
ICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE1OSwxOCArMTU3LDE2IEBAIHZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwotICAgICAgICAgICAg
aWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4
ZWMsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDog
Tm90U3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVy
KGV4ZWMsIGdzLCBhdHRyaWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFs
dWUoKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBh
biBleGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IG9yIG9uZSBvZiBpdHMgCkBAIC0xODUs
MjIgKzE4MSwyMiBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIAogICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
CiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxkVGhyb3cpOwotICAgICAgICBwdXRUb1By
aW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVl
LCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7
CiAgICAgfQotICAgIAotICAgIGlmIChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29s
IHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5h
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlz
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAg
cmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApp
bmRleCBjYmJmMjYxZmFmMzA0OTliZWNmMzgxMTQ3ZmM3OGU0OTg1MDRlZjg2Li5hZGE4MDI5N2I4
NDcxZjZiYjNkOTBlODQyNjI5NGQ5NmQ3NGRmZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yODYsMTEgKzI4NiwxMSBAQCBjbGFzcyBKU1ZhbHVl
IHsKIAogICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JikgY29uc3Q7CiAKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHZvaWQgcHV0SW5saW5lKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZl
QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSB0
b1RoaXMoRXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBjYzdjYjhkZjQ3OTM1
YWRhMTQ0ZTFlYmY4NjgxMjlmZjRmOWJkYzU3Li4zMzcyZWE2MDI1NWFhMzc3OTJlNDMzZWE4ZmNi
MjI2N2Q0YmZkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgwMyw0MCArODAzLDM2IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUp
IGNvbnN0CiAgICAgcmV0dXJuIGdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0YXRp
Y19jYXN0PGRvdWJsZT4ocHJvcGVydHlOYW1lKSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVl
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXQo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkp
IHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9Qcmlt
aXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICByZXR1cm4gYXND
ZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1ZTo6
cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpT
VmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5M
SUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoVU5M
SUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7
CiAgICAgYXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
OwotICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAgICAg
IEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0g
SlNPYmplY3Q6OnB1dCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHV0UHJvcGVydHlTbG90
IG90aGVyU2xvdCA9IHNsb3Q7Ci0gICAgcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIG90aGVyU2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKICAgICBzbG90ID0gb3RoZXJT
bG90OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5
SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAg
IHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAg
IHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVm
aW5lZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRl
eCA0OGY1YTFhMjYzZGI1ZmEzMjIzNjVkMmQ5MzRhY2M4YzI3NjZlNDQxLi42ZjE1NzJmODNmODZl
MWI5OWRlNzViNmY5OTIxZjEzOThmMjE1ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKQEAgLTEwNCwyNSArMTA0LDIzIEBAIENvbnN0cnVjdFR5cGUgSlNDZWxs
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEp
CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2VsbDo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgaWRlbnRp
ZmllciwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50
b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRp
ZmllciwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90
KTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7CiAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAgSlNW
YWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlk
ZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
c09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBK
U0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggZTBkZDE2NDRhNjczZTg3NzY4NmNiYzhlZDM1ZWFjODUzNjFkNzYyNy4uZTQxNDMxZmQx
OGQyOTg0YmQ4NjMyMTJmMjI4Nzc4ZjI4NTNjNTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTE0NSw4ICsxNDUsOCBAQCBjbGFzcyBKU0NlbGwgewogICAgIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUq
IG1ldGhvZFRhYmxlKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxl
KFZNJikgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNDZiZjFjYmJlOTYyNDE0YmJhZjc4NGNkZWZiMzM5
YjNlNGEyOGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3ZTQ4ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTExMSwx
OCArMTExLDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3OjpwdXQoCitib29sIEpTRGF0YVZpZXc6
OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0
aAotICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRl
bXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNs
b3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBl
ZCBhcnJheSBwcm9wZXJ0eS4iKTsKIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTRGF0YVZp
ZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRlMTA1OWU5ZjcyNTVhMThjNTgwNmZkYTQ5ZmMu
Ljc3NGI2ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRmN2QxZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3Mg
SlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAKIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZiODUwNTljM2EyYzJlNmM5
ODVmOWQyMmM1ZDY5ZjFiYmQxZTY3MjUuLjc4YjUzZWQ3YTRlNWYzMWVjNmI1OTVkOTI2MWE4YTQx
N2JmODMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCkBAIC00MjEsMTMgKzQyMSwxMiBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQmFz
ZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkgewotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVk
LCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93
aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KQEAgLTQzNywyMyArNDM2
LDIxIEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5t
X3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rp
b24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEg
W1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBk
b250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgZG9udENhY2hlKTsKICAgICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgp
LT5pc1N0cmljdE1vZGUoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxs
ZXIpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSBy
ZWlmaWVkLCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9r
YXkgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKG9rYXksIG9rYXkpOwotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY2FsbGVyKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1l
KTsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBiZTkyMTAx
NDE4MzljODE4OGZiNDE4MzBkOTI0YTdlZDI5NmQ4YTYyLi5lODAxY2E1YjE3ZWFkMjRjYzkxYTQ0
Y2NjYTZhMmY0MTdlZTA5ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCkBAIC0xNjksNyArMTY5LDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBK
U0NhbGxlZSB7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUg
PSBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCA4NTg5MzkyYWZjZGExZjViMDE5N2RjNDk1OWEyNDdlMmRiMGZiYTNkLi40MDdhNzEyZjU4OGQw
YWY4MjMyMGI1OThhMjI5N2YxZGNiMzg5NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI3NCwxMiAr
Mjc0LDEyIEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlC
dWZmZXJWaWV3IHsKICAgICBmcmllbmQgc3RydWN0IFR5cGVkQXJyYXlDbGFzc0luZm9zOwogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXgg
YjZjNmFlZDg4MTRhOWFiMmRjY2QyMGU2MTFlNjdjNGY5ZDljYmE5MS4uYTgwYWM2MDE5Y2I5MGE2
Y2I2ZmFhZjg4ZjMxNzg0MzNiNGQ4ZWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTMwMywxOCArMzAzLDE2IEBACiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci12
b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoCitib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAgICAg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAgICAg
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgCi0gICAgQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC0zNjQsMTkgKzM2MiwxNyBAQAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6cHV0QnlJbmRleCgKK2Jvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1
ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXQoCi0gICAgICAgICAgICB0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3Qp
OwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5zZXRJbmRleChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5jcHAKaW5kZXggNmQxNzYwODZlYWQzOTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZi
ZDBmNi4uZWZmZWJmYjQ1MTUxMTMxZmEwNTg1NDU0NTg1YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmNwcApAQCAtMzgsMTMgKzM4LDE1IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqCiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKLXZvaWQgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogICAg
IGJvb2wgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5ID0gdHJ1ZTsKICAg
ICBib29sIGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9yID0gc2xvdC5pc0luaXRpYWxpemF0aW9u
KCk7Ci0gICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFBy
b3BlcnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJvcik7CisgICAgYm9vbCBwdXRSZXN1bHQg
PSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0Nv
bnN0UHJvcGVydHksIGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9yLCBwdXRSZXN1bHQpOworICAg
IHJldHVybiBwdXRSZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmgKaW5kZXggNjQzZjA5NWRkMTk3OTllNWFhMzI2MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0
ZmQyZTA0NjE1MDBlODJkY2NkNjgwYjFhYzE2Y2YxZDZmMDcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3lt
Ym9sVGFibGUoKS0+c2l6ZSgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3
YTZiNDlmMTkyMTM3ZjRlNy4uYTUwNDBjYmZjNGIzNDQ3ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNjIwLDE2ICs2MjAsMTcgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5
UHJvZmlsZXIoKSBjb25zdAogICAgIHJldHVybiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5z
dXBwb3J0c0xlZ2FjeVByb2ZpbGluZyh0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFs
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNl
bGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkg
PT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5
RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBi
b29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hw
b2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
d1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQorICAgICAg
ICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFj
ZTA2YjJkMy4uODNlZTM4MTNlOGFjOThhMzdhMjJjZWI5NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDEs
NyArNDAxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmlu
ZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNl
dHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4
OWQ5ZGQ2OTQzOTc3YzEyMjg1MjEwNDdkZDVkNzQyZTQuLjgyOTAxYTc5NDRkYmE2NGExMjAxZGYx
NTQ5NTZkNGZhNDIzNTQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTgwLDIxICs4MCwyMiBAQCBib29s
IEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0xleGlj
YWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RN
b2RlKCkgfHwgdGhpc09iamVjdC0+aXNMZXhpY2FsU2NvcGUoKTsKICAgICBib29sIGlnbm9yZVJl
YWRPbmx5RXJyb3JzID0gZmFsc2U7Ci0gICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdh
dGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVy
bjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChzeW1ib2xUYWJsZVB1dElu
dmFsaWRhdGVXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJl
c3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAKICAgICAvLyBXZSBkb24ndCBjYWxs
IHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSBfX3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIg
CiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhl
ciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52
aXJvbm1lbnQgb2JqZWN0LgogICAgIEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpKTsKLSAgICB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIH0KIAogYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aAppbmRleCBjNDBhZTg3Mzk1Y2MzMTIyZDY4MDMxZWMyZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3
OWM2MTQ0MDI3ZjNkNjFmODYyNmJmMzQwYjhiM2JkYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTY3LDcgKzY3
LDcgQEAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJl
Y29yZCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5k
ZXggZjA4ZmUzZDAyYjk5YzgzM2I1NTE3M2ViNTQwODRjMWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1
OTJiMzIxOGQ3MmU3MzRhYzcxZTllY2RmMThhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwOCwxNCArMTA4
LDE0IEBAIHZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEJhc2U6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXks
IG1vZGUpOwogfQogCi12b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxs
KTsKICAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KICAgICBKU01v
ZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVj
b3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oCmluZGV4IGY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDli
MDMuLjQzNGJiN2MzZjhhMjFhZWI4ZDllZjU5YzIyYWZlMWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAg
LTc3LDcgKzc3LDcgQEAgY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGlj
YWxFbnZpcm9ubWVudCB7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDBmZTljMzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJh
YTljMzMwOWRiODcuLjQwZGRhNzMzM2ZmNzIwYWRmNjA5OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHAKQEAgLTE1MSwxNyArMTUxLDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0
LXAtdi1yZWNlaXZlcgogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCAzN2U2NDJlODc0YTQ2ZDEz
ZjQ2NWUxYTdkN2M3ZGU0MWNmN2IyN2QxLi44Y2ZlY2ZkMGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4
ZjQ3MjY2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH0K
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2Uy
ZTAxYmJhN2JiOGE5MTQ3Zjg0ZmYuLjdiN2IzMjNlOThhOTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4
MWQyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAKQEAgLTc4Niw3ICs3ODYsOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAg
ICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9y
dGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMs
IGltcG9ydEVudHJ5LmxvY2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOwor
ICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRF
bnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
aW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFt
ZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewpAQCAtODE2LDggKzgx
NywxMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVj
U3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgIGZvciAoY29uc3QgYXV0byYgdmFy
aWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZh
ck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKLSAgICAgICAgaWYgKCFvZmZzZXQu
aXNTdGFjaygpKQotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
bW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFi
bGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
ICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAgaWYg
KCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNl
OworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52
aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5Lmdl
dCgpKSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNl
LCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgpAQCAtODM3LDcgKzg0
MCw4IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNT
dGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgICAgICAgICAgICAgIHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7Ci0gICAgICAgICAg
ICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhl
YywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3Vs
ZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8g
dHJ1ZSk7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMs
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRy
dWUsIHB1dFJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKaW5kZXggYWY0NzM3ZTliMDJmNTcxMDMw
NjVlZTdkOGU3YmEwNDBkZWMwZDJhYy4uY2I1MTVkODQ0MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5
YzcyNDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RB
bk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5jcHAKQEAgLTU4LDE0ICs1OCwxNiBAQCBib29sIEpTTm90QW5PYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQor
Ym9vbCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQo
ZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBKU05vdEFuT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wpCitib29sIEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIGJvb2wgSlNOb3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggMGMyNmVjOThiNmZiMTdhODFjZWM5NTlmNzFkNWFj
YzQ0OGE0NTdlMi4uOWM0Nzk0M2UyMTFhZGVjYWNjYWY5YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaApAQCAtNjks
OCArNjksOCBAQCBjbGFzcyBKU05vdEFuT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyZjUyYTFmOTViYWEwMTY5NmU0MjI5
Y2M5ZWJhZDQzMmY4NzFlNzM4Li42ZWI1NjZmNDgyYWVmMzQwYzA5MjlkMmViZGRiMGQ1ODA2OTU3
NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0z
NzksMTIgKzM3OSwxMiBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42
LjIuMgotdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgcmV0dXJuIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDE1
ICszOTcsMTUgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgICAgICBBU1NF
UlQoc3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXMpOwogICAgICAgICAgICAgICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwogICAgICAgICAg
ICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsU2V0dGVy
KGV4ZWMsIHRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0
ZXIoZXhlYywgdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9k
ZSA6IE5vdFN0cmljdE1vZGUpOwogICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRl
cihvYmosIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0
b21HZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhl
YywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgp
LCB2YWx1ZSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xv
dyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAg
ICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIGpzQ2FzdDxDdXN0
b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBqc0Nh
c3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAg
LTQyMywxNiArNDIzLDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFvYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAg
aWYgKG9iai0+Y2xhc3NJbmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVz
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5
KGV4ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwg
b2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHBy
b3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAg
ICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iaik7Ci0g
ICAgICAgICAgICBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gcHJveHktPlByb3h5T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5w
cm90b3R5cGUoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTQ0MSwxOCAr
NDM4LDIxIEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAgIAogICAgIEFTU0VS
VCghc3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXMpOwotICAgIGlmICghcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpICYm
IHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBpZiAo
IXB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90KSkgeworICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRF
WCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwg
dmFsdWUsIHNsb3QpOwogICAgIH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4
aW5nVHlwZSgpKSB7CkBAIC00NjIsMTUgKzQ2MiwxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIHRoaXNP
YmplY3QtPmNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAg
ICAgIC8vIFJlbG9vcC4KLSAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsK
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PmNvbnZlcnRJbnQzMkZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKLSAgICAgICAgICAgIHB1
dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgIH0KQEAgLTQ4MiwyMiArNDgwLDIwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbcHJvcGVydHlOYW1l
XS5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJM
RV9JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0o
KSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBkb3VibGUgdmFs
dWVBc0RvdWJsZSA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICh2YWx1ZUFzRG91Ymxl
ICE9IHZhbHVlQXNEb3VibGUpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAg
ICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAg
ICAgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZs
eSgpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpCkBAIC01MDUsNyArNTAxLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBi
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtwcm9wZXJ0eU5hbWVdID0gdmFsdWVBc0RvdWJs
ZTsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
KQogICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgocHJvcGVydHlOYW1lICsg
MSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAg
ICAKICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKQEAgLTUyNyw3ICs1MjMsNyBA
QCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFs
dWVzSW5WZWN0b3I7CiAgICAgICAgIAogICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPnZtKCks
IHRoaXNPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZToKQEAgLTU0MiwyNiArNTM4LDI4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAg
ICAgCiAgICAgICAgIC8vIFVwZGF0ZSBsZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yIGFzIG5l
Y2Vzc2FyeS4KICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+PSBsZW5ndGgpIHsKLSAgICAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAg
aWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgIGxlbmd0aCA9IHByb3BlcnR5TmFt
ZSArIDE7CiAgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKICAgICAgICAg
ICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfSBlbHNlIGlmICgh
dmFsdWVTbG90KSB7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQ
dXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBw
dXRSZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAgICAg
ICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHZhbHVlU2xvdC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAg
ICAgCi0gICAgdGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25h
cnlJbmRleGluZ01vZGVXaGVuQXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYgdm0sIEFycmF5
U3RvcmFnZSogc3RvcmFnZSkKQEAgLTEyNDMsNyArMTI0MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFs
bG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0
LCBleGVjKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNl
dEdldHRlcihnZXR0ZXIpOwpAQCAtMTI1NCwxMCArMTI1MiwxMCBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIGdldAogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNl
KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
Citib29sIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRl
cihzZXR0ZXIpOwpAQCAtMTI2OCwyNyArMTI2NiwyNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRTZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNl
dAogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RW51bWVyYWJsZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Q
cm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0K
IAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYg
QWNjZXNzb3IpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRl
eExpa2VQdXREaXJlY3QpOwogCi0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52
bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRy
aWJ1dGVzKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQogewogICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1v
ZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMs
IHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmlu
ZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7
CiAKICAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0
eSk7CiAKQEAgLTEyOTYsMTggKzEyOTIsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRh
aW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29s
IEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBzbG90KTsKKyAgICBib29sIHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZp
bmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3Qp
OwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAg
IGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFp
bnNSZWFkT25seVByb3BlcnRpZXMoKTsKIAogICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllc1dpdGhQcm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEhhc1By
b3BlcnR5KE8sIFApIGZyb20gU2VjdGlvbiA3LjMuMTAgb2YgdGhlIHNwZWMuCkBAIC0xODI3LDcg
KzE4MjUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5
U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgZwogICAgIHNsb3Quc2V0Q2FjaGVhYmxl
R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVy
U2V0dGVyKSwgb2Zmc2V0KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVz
Y3JpcHRvcikKK2Jvb2wgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIG1hcCA9IG1fYnV0dGVyZmx5LmdldCh0
aGlzKS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpOwpAQCAtMTgzOCw3ICsxODM2
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWEKICAgICAgICAgZWxzZSBpZiAob2xkRGVzY3Jp
cHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgZW50cnlJbk1hcC0+c2V0
KHZtLCBtYXAsIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVz
ID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikg
JiB+QWNjZXNzb3I7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpAQCAtMTg2
MSwxMSArMTg1OSwxMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogCiAgICAgICAgIGVudHJ5
SW5NYXAtPnNldCh2bSwgbWFwLCBhY2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJp
YnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlw
dG9yKSAmIH5SZWFkT25seTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpOwog
ICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlk
aW5nQ3VycmVudChvbGREZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRGVm
aW5lZCBpbiBFUzUuMSA4LjEyLjkKQEAgLTIwMDQsNyArMjAwMyw3IEBAIHZvaWQgSlNPYmplY3Q6
OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgpCiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFy
c2VNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0
QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1Zh
bHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09i
amVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUg
YmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJ
dCBvbmx5CkBAIC0yMDE2LDE0ICsyMDE1LDE0IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAg
ICAgICAgIGlmIChzdG9yYWdlICYmIHN0b3JhZ2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAg
ICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VN
YXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBpZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1h
cC0+bm90Rm91bmQoKSAmJiAoaXRlci0+dmFsdWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJl
YWRPbmx5KSkpIHsKLSAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1Zh
bHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAg
ICAgICAgICAgICAgICBwdXRSZXN1bHQgPSBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVl
LCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChjdXJyZW50LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAg
ICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAg
ICAgICAgICAgIHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFs
dWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUlu
ZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjAzNSwxNyArMjAz
NCwxNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
Rm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVj
dDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0
OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0
KQogewogICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGUoKTsKICAgICBpZiAo
cHJvdG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICByZXR1cm4gYXNPYmplY3QocHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRC
eUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dyk7CisgICAgcmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hv
dWxkVGhyb3csIHB1dFJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlPgotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhv
dXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
K2Jvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
QVNTRVJUKChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1No
YXBlKTsKICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMDU5LDE2
ICsyMDU4LDE1IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAg
ICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5z
ZUVub3VnaEZvclZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZs
eSkpKQorICAgICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNl
RW5vdWdoRm9yVmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5
KSkpCiAgICAgICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VN
YXAoaSwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0g
TUFYX0FSUkFZX0lOREVYKTsKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAg
ICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAo
dm0pOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7
CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1
ZSwgZmFsc2UpOwogICAgICAgICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkp
OwogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2
bSwgaSArIDEpOwpAQCAtMjA3OSwzMSArMjA3NywzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1
bgogICAgIGNhc2UgSW50MzJTaGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7
CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRl
QmFycmllcih2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgCiAgICAgY2FzZSBEb3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNO
dW1iZXIoKSk7CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIo
KTsKICAgICAgICAgQVNTRVJUKHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAg
ICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBDb250aWd1b3VzU2hhcGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ld
LnNldCh2bSwgdGhpcywgdmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRl
ZCBieSBKU0FycmF5LmNwcC4KLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgSlNWYWx1ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBKU1ZhbHVlKTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5
SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hh
cGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3Jh
Z2UqIHN0b3JhZ2UpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogCkBAIC0yMTMwLDEyICsyMTI5LDExIEBAIHZvaWQgSlNPYmplY3Q6
OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSog
ZXhlYywgdW5zCiAgICAgICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAg
ICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8sIG9yIGNhbid0IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBh
bGxvY2F0ZSBhIHNwYXJzZSBtYXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxv
Y2F0ZVNwYXJzZUluZGV4TWFwKGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjE0
NSw3ICsyMTQzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+
bGVuZ3RoSXNSZWFkT25seSgpIHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAg
ICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVu
Z3RoID0gaSArIDE7CiAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjE1
NCwxMCArMjE1Miw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5n
dGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1
cnJlbnRseSB1c2luZyBhIG1hcCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBk
b2luZyBzby4KICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlm
IFNwYXJzZU1vZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBh
bGxvY2F0aW9uIGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdl
LT5tX251bVZhbHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNl
TW9kZSgpIHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJh
eSkgfHwgIWluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAg
ICAgbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5z
ZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZl
Y3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRF
bnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFk
IG1fc3RvcmFnZSBhZnRlciBpbmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVz
SW5WZWN0b3IuCiAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjE3NSw5ICsyMTcx
LDEwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAg
ICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZt
LCB0aGlzLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApA
QCAtMjE4NywyNSArMjE4NCwyMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzog
ewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAg
IHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAg
ICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAg
ICAgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2Rl
KHZtKSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJ
c1N1ZmZpY2llbnRseUJleW9uZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9T
UEFSU0VfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGks
IHZhbHVlLCBzaG91bGRUaHJvdywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVl
ZHNTbG93UHV0SW5kZXhpbmcoKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhp
bmcgdHlwZSB0byB0aGUgU2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAg
ICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwg
aSArIDEpKTsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5
SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjIxMywzOCArMjIw
NywzMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIAotICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihl
eGVjLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAg
ICAgIAotICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4
ZWMsIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJM
RV9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAg
ICAgICAKLSAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAg
IHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3Vz
U2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2Ug
QUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVj
LCBpLCB2YWx1ZSk7CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZToKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAg
ICAgLy8gTm8gb3duIHByb3BlcnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1p
Z2h0IGJlIGluIHRoZSBzcGFyc2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBt
YXAgPSBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1h
cCAmJiBtYXAtPmNvbnRhaW5zKGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAt
PmNvbnRhaW5zKGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBw
dXRSZXN1bHQ7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAg
ICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZShleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAg
CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRl
eE1vZGUgbW9kZSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQxOCwxNSArMjQwNywxNSBA
QCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0
dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsIG5hbWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMp
OwogICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1
dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNj
ZXNzb3IsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1l
KQpAQCAtMjQzNCw3ICsyNDIzLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NF
UlQobmFtZSk7CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24s
IGludHJpbnNpYyk7Ci0gICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBh
dHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0
aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTI3NDUsMTIgKzI3MzQsMTEgQEAg
c3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJn
ZXQsIFByb3BlcnR5TmFtZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlC
ZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQotICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSk7Ci0gICAgZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBkNjA2Mjc4Yjdh
NjljYjQ3ODYzOGIxNzE4MzFjZjNhN2NjODIzMjZhLi4yZjMwODc3ODFlMmIzZDY2MzVkMWY5ZDYx
ZDQ0NDU1ZjJjNTg1NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKQEAgLTE1OCwxOCArMTU4LDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOwogICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElu
bGluZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElu
bGluZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNr
bHkocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOworICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAg
ICAgICAgCiAgICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6
CkBAIC0xOTEsNyArMTkxLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB9CiAKICAgICAvLyBBIG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0
RGlyZWN0SW5kZXguCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUlu
ZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSk7CiAgICAgICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAog
ICAgIHsKQEAgLTQ4NCwxNSArNDg0LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgLy8gIC0gYWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJp
YnV0ZXMgd2lsbCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxs
IGV4aXN0IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5
IG5hbWUgaXMgYXNzdW1lZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3Qo
Vk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICB2b2lkIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyA9IDApOwotICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJl
Y3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBw
dXRHZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKLSAgICB2b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9v
bCBwdXRTZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBA
IC02MTgsOCArNjE4LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2
b2lkIHB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1
ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQog
ICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2Nh
dGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIElkZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rp
b25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwpAQCAtNjkwLDcgKzY5MCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgLy8gaXMgZXF1aXZhbGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50
ZXJjZXB0UHV0QnlJbmRleE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0
UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8g
UmV0dXJucyAwIGlmIGludDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVj
YXVzZQogICAgIC8vIGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJh
ZCB0aW1lLCBvciBiZWNhdXNlCkBAIC04MzYsOCArODM2LDggQEAgY2xhc3MgSlNPYmplY3QgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93
RXhjZXB0aW9uKTsKIAogICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgot
ICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFn
ZSopOworICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9v
bCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5
U3RvcmFnZSopOwogCiAgICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVk
IG5ld0xlbmd0aCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg0
Niw3ICs4NDYsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAK
ICAgICB2b2lkIG5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAg
IAotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUq
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGlu
ZGV4LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAg
ICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2Nl
ZWQgYW5kIHlvdSdyZSBzdXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4K
QEAgLTg5MSw3ICs4OTEsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBORVZFUl9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRl
eFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtOTAwLDkgKzkwMCw5IEBAIGNsYXNzIEpTT2Jq
ZWN0IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNo
VGFibGVWYWx1ZSogZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAg
ICAgICAgIAotICAgIHZvaWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNl
QXJyYXlFbnRyeSosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYgb2xkKTsKKyAgICBib29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJz
ZUFycmF5RW50cnkqLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIG9sZCk7CiAgICAgICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
IGJvb2wgcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0
RGlyZWN0SW5kZXhNb2RlKTsKICAgICAgICAgCkBAIC0xNDIzLDE5ICsxNDIzLDE5IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQ
dXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0
dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwot
ICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBB
U1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAs
IHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJv
cGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXgg
ZGIxNzBmMjk4Y2IyNTU5YzdlMzdhMTJlZTExMDJjMDA5MGM1MDhhMC4uOWQ1MzM0MWExNDgyYzJl
OTY2YzMyNDBjMWIzMDJkZWUyODBlNjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgUHIKIH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNP
YmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQg
Zmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBw
cm9wZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxs
IG5ldmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAg
ICBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwg
c2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZh
c3RQdXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3Jl
VG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAs
IHNsb3QpCi0gICAgICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxp
bmVTbG93KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRo
aXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCAwLCBzbG90KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
dGhpc09iamVjdC0+cHV0SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJveHkuY3BwCmluZGV4IDkzN2MwODg3NDVmOGJiN2NmZmJkZjdhZTE5M2M1MmJlNWNmN2I3
Y2YuLjYwODM1MjkzNTA5ZWUwZGUwNzE2OGFiZTdmN2EyZWFjNjQxZWE4ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9v
bCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmpl
Y3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJv
eHk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1By
b3h5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2Jq
ZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50
YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmpl
Y3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9p
ZCBKU1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IEpTUHJveHk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlz
T2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxk
VGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2Qx
YjcyYWJjZWJhODdmZmIwNmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2Zk
NTY2NmFmYjgwYjliYmFlZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
eHkuaApAQCAtNzYsOCArNzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRi
YjVhYzIzNmY3NmFiYWI4MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQx
YTRmNTdjOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xU
YWJsZVB1dE1vZGUgewogdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0
TW9kZSwgdHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9s
VGFibGVQdXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcywKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25v
cmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNl
dComIHNldCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcw
LDYgKzE3MCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFz
dEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAg
ICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIApAQCAtMTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXQoCiAgICAgLy8gdGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIg
R0MuIEFuZCBJIGRvbid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2lu
Zy4KICAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
CiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNo
b3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYg
cHV0UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxT
eW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdu
b3JlUmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1
dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwg
aWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAg
ICAgICBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5
TmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBi
b29sIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUg
U3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlk
YXRlV2F0Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAot
ICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJy
b3JzKQorICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRP
bmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0g
bnVsbHB0cjsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9
IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3Vs
dCA9IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhy
b3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwog
ICAgIGlmIChzZXQpCiAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURl
dGFpbChvYmplY3QsIHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdl
IGhhZCBmb3VuZCB0aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQu
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBT
eW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRy
aWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCog
c2V0ID0gbnVsbHB0cjsKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNl
OwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0
ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0
ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAg
aWYgKHNldCkKICAgICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDBiZjlkMmU5YjUwZmYyMjM0NjQ2NjQ2MWQ4NTliZTgz
ODI1OThhYWYuLjM1OTVjMTc3OWIyNzFmMGI4OTllNmM3NjE1YTIxYWU4MmE2MDE5NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjcgKzI4NCwzOSBAQCBp
bmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
VGFibGUmIHRhYmxlLCBUaGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGlu
ZyB0aGUgcHJvcGVydHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9i
amVjdCBwdXQgd2FzIGNhbGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRo
YXQgcHV0IGlzIGJlaW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBw
cm94eSB0YXJnZXQpLgogLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1
dCB3YXMgb3JpZ2luYWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRo
ZSBwcm94eSBpdHNlbGYpLgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSB7CiAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25s
eSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4g
b3ZlcnJpZGUgcHJvcGVydHkuCiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKLSAgICB9IGVsc2UgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3Nv
cikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBBY2Nlc3NvcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBS
ZWFkT25seSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKICAgICAgICAgSlNWYWx1ZSB1cGRhdGVU
aGlzVmFsdWUgPSBlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3IgPyBzbG90LnRo
aXNWYWx1ZSgpIDogSlNWYWx1ZShiYXNlKTsKICAgICAgICAgZW50cnktPnByb3BlcnR5UHV0dGVy
KCkoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHVwZGF0ZVRoaXNWYWx1ZSksIEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSkpOwogICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vz
c29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihiYXNlLCBlbnRyeS0+cHJv
cGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9t
VmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAgIH0gZWxzZSBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiAvKioKQEAgLTMxMiwxNCArMzI0LDE0IEBAIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogYmFzCiAgKiBJ
dCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9yIHRoZSBwcm9wZXJ0eSB0byBiZSBzZXQuICBJZiBh
biBlbnRyeQogICogaXMgZm91bmQgaXQgc2V0cyB0aGUgdmFsdWUgYW5kIHJldHVybnMgdHJ1ZSwg
ZWxzZSBpdCByZXR1cm5zIGZhbHNlLgogICovCi1pbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNW
YWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoraW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJs
ZSYgdGFibGUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAg
IGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IHRhYmxlLmVudHJ5KHByb3BlcnR5TmFtZSk7
CiAKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwdXRFbnRy
eShleGVjLCBlbnRyeSwgYmFzZSwgYmFzZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgcHV0UmVzdWx0ID0gcHV0RW50cnkoZXhlYywgZW50cnksIGJhc2UsIGJhc2UsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggMDE2YTI2ODZlYWJkYzI1
YjhmNzUyOWM2ZGRjNjYyNmQ5NDQ3ZjI5Ni4uZTBhYWY2YTY5NjJkMzAyNmRlZGViMjdmN2FjMmY3
ZDdlMDBlZmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcApAQCAtMzQ1LDEyICszNDUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci12b2lkIFBy
b3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZh
dWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQpCitib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24g
cGVyZm9ybURlZmF1bHRQdXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAo
IXZtLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9t
VWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBQ
cm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUs
IEpTVmFsdWUgdGhpc1ZhbHUKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRs
ZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQg
c2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0
Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM2NywxMiArMzY3LDEwIEBAIHZvaWQgUHJveHlPYmplY3Q6
OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRo
aXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBwZXJmb3Jt
RGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM4MSw2MiArMzc5LDYxIEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHRyYXBSZXN1
bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFy
Z2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAg
ICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBwdXRWYWx1
ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdy
aXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9y
IGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnLiIpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJs
ZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Uu
IikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb3h5T2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUHJveHlPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKQorICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3Qq
PihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAg
SlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QtPnRhcmdldCgp
KTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RU
YWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
ICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlz
VmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3Bl
cnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXRC
eUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKTsgCiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmpl
Y3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9
IHNob3VsZFRocm93OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlz
U3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhl
IHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0
LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRh
cmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1
dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRo
aXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHBl
cmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3Jt
RGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhD
b21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCBiNjhj
YWM0NGJlZDkwODk2OGI2ZGZiMzRlMzkwMDExM2RhZDQxYzQyLi41NTU5NzhjZjVjODIyZTk1NWE1
NzkyZmYyNDhhY2JjY2QyNmM1NTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmgKQEAgLTYyLDkgKzYyLDkgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNPYmplY3QqIHRhcmdldCgpIHsgcmV0dXJuIG1f
dGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1ZSBoYW5kbGVyKCkgeyByZXR1cm4gbV9oYW5kbGVy
LmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4Q29tbW9uKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
cHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEJ5
SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6
CiAgICAgUHJveHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTkyLDcgKzkyLDcgQEAgY2xh
c3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbj4KICAgICBib29sIHBlcmZvcm1EZWxldGUo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVuY3Rpb24pOwogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uPgotICAgIHZvaWQgcGVy
Zm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKKyAgICBib29sIHBlcmZv
cm1QdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbik7CiAgICAgYm9vbCBwZXJmb3Jt
UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBwZXJmb3JtSXNFeHRlbnNp
YmxlKEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgcGVyZm9ybURlZmluZU93blByb3BlcnR5KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuY3BwCmluZGV4IDg5NGFhZmE0Njk2OGU2MDMyYWZkOWRkOGJiZDc1YjI5ODE3OTA3OWQuLmM2
ZDU3YjMxNzA5NDllZGE0YjM5NGM5NmVmNzVlOGJlOTc4NDdlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRl
bnNpYmxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSopOwogCiB9CkBAIC02OSw2ICs3MCw3IEBACiAg
ICAgaXNFeHRlbnNpYmxlICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAg
ICByZWZsZWN0T2JqZWN0T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKICAgICBwcmV2ZW50RXh0ZW5zaW9ucyAgICAgICAgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRl
bnNpb25zICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgc2V0ICAgICAgICAgICAgICAg
ICAgICAgIHJlZmxlY3RPYmplY3RTZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMwogICAgIHNldFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0UHJv
dG90eXBlT2YgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCkBAIC0yMzQs
NiArMjM2LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFBy
ZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtcmVmbGVjdC5zZXQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7
CisgICAgSlNPYmplY3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsK
KyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0g
ZXhlYy0+YXJndW1lbnQoMyk7CisKKyAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVy
cm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KKyAgICBib29sIGlzU3RyaWN0TW9kZSA9
IGZhbHNlOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBpc1N0cmljdE1vZGUp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhl
YykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CmluZGV4IDRmZGFlYjRhNDlhOWM3YjFiNTFjYmY1M2RjY2QwMmU0ZTA1YTJkNTAuLjM4YzliOTM1
NDkxYmJiODA5OWZmMmFjN2E3MjJiMDUwMDM1NGNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtMTQ3LDE2ICsxNDcsMTYgQEAgc3Rh
dGljIHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGgKICAgICBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBm
YWxzZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKLSAgICAgICAgYXNSZWdFeHBPYmplY3QoY2Vs
bCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAg
ICAgIGJvb2wgcmVzdWx0ID0gYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRleChleGVj
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFs
dWUoYXNSZWdFeHBPYmplY3QoY2VsbCksIHNsb3QuaXNTdHJpY3RNb2RlKCkKICAgICAgICAgICAg
ID8gcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0CiAgICAgICAgICAgICA6IHJlZ0V4cE9i
amVjdFNldExhc3RJbmRleE5vblN0cmljdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEV4
ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggYTYyNmQyOTEyZWE4ZWE4ZjI1NDNmNTE3ODI2
MGUyZjhmZDVlN2I1Ny4uYjk0MWVlOTBkNTA1NGE1MjkxMmM1N2ZmNTAzMDBiZGQ0NjhlNzAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTQx
LDIwICs0MSwyNiBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgdm9pZCBzZXRSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHIpIHsgbV9yZWdFeHAuc2V0
KHZtLCB0aGlzLCByKTsgfQogICAgIFJlZ0V4cCogcmVnRXhwKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHAuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGxhc3RJbmRleCkKKyAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMs
IHNpemVfdCBsYXN0SW5kZXgpCiAgICAgewogICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkpOwotICAgICAgICBpZiAoTElLRUxZKG1f
bGFzdEluZGV4SXNXcml0YWJsZSkpCisgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJc1dy
aXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFycmll
cihqc051bWJlcihsYXN0SW5kZXgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgdm9pZCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRUaHJvdykKKyAgICBib29sIHNldExhc3RJ
bmRleChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbGFzdEluZGV4LCBib29sIHNob3VsZFRocm93
KQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQorICAg
ICAgICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1f
bGFzdEluZGV4LnNldChleGVjLT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwotICAgICAgICBlbHNl
IGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBKU1ZhbHVlIGdldExhc3RJbmRleCgpIGNvbnN0CiAgICAgewpA
QCAtNjUsNyArNzEsNyBAQCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiAKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmNwcAppbmRleCA5YTVkYTgzOTU3YzMyNGU4ZGFmNDAyNWRmNDE0OTUyZDg0YzA1NzM5Li5jOGUw
MDNiZjg1OTgyNjFiOTM2MGQ3Y2I2YjYxYjhiN2I3MmVhNjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtODgs
NyArODgsNyBAQCBTdHJ1Y3R1cmUqIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCB2
b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGFycmF5LCB1bnNpZ25lZCBpLAogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsK
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGVudHJ5LnB1dChleGVj
LCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gZW50cnkucHV0
KGV4ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIFNwYXJz
ZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJh
eSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGly
ZWN0SW5kZXhNb2RlIG1vZGUpCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCB2b2lkIFNwYXJzZUFycmF5
RW50cnk6OmdldChQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiAgICAgZGVz
Y3JpcHRvci5zZXREZXNjcmlwdG9yKEJhc2U6OmdldCgpLCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9p
ZCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQorYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3Vs
ZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBzZXQoZXhlYy0+dm0oKSwg
bWFwLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgY2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwg
c2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIGNh
bGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93
ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5
RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA3NTRiNTNkOWQ2MDFk
ZjJhY2Q3YmNhZjJlOTRhZWY2ZDMzN2RmYTIuLmY3MWRjOTk0ZTg5NGE3MjgzYTU3MmIzMzI2Yzll
ODc2MWI5MjJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nw
YXJzZUFycmF5VmFsdWVNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNwYXJzZUFycmF5
RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKIAogICAgIHZvaWQgZ2V0KEpT
T2JqZWN0KiwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICAgdm9pZCBnZXQoUHJvcGVydHlEZXNj
cmlwdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFs
dWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBib29sIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1
ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTVmFsdWUgZ2V0Tm9uU3Bh
cnNlTW9kZSgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTEwNiw3ICsx
MDYsNyBAQCBjbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBv
ZiB0aGUgbWFwCi0gICAgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEVudHJ5KEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSk7CiAgICAgQWRkUmVz
dWx0IGFkZChKU09iamVjdCosIHVuc2lnbmVkKTsKICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVk
IGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDA5ODhkNmQwNjkwMjk4OTA0ZWQ1OTlhMWRl
ODhjN2YzZDA0NTRhM2QuLmMyODdlZjhlMGUyNmM2NTZlYWFkYzJmZWU3MzgwNGJhMDY0YzgwYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApA
QCAtNjAsMjUgKzYwLDI1IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAg
ICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIEpTT2JqZWN0OjpwdXQoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQg
U3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3Qq
PihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRl
eChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBK
U09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2Zk
ZjFkYTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTRkMjJmYTJkYjBlYWNkNzQ4
ODhjZWVkMDI2ZjM2MTZhNjcyMGUzZC4uYTRjM2VlY2RlODI2NTM3N2VmMzYwZDRmZTAwYTEyMzlm
NTY2MDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3Nyw3ICsx
MDc3LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcu
dGFyZ2V0X21ldGFfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvUmVmbGVjdF9SZWZsZWN0LnNldC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wubWF0Y2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wucmVwbGFjZV0uanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDU0YWNiN2I1ZWI2MmRhOTVi
ODVhNTk4Nzc4NmUxMmIzNjFlNWE4ZDMuLjQ2OWU0MTFiM2IwMmY1NTBjNjRmNzViYTcyNmI1MWUz
YWUzYTRhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5
bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIGJvb2wg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBw
dXRSZXN1bHQpCiB7CiAgICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3Bl
cnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpCkBAIC0zNDEsNyArMzQxLDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmEKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SW5mby5wcm9wZXJ0
eUlEKTsKLSAgICB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9w
VmFsdWUsIGltcG9ydGFudCwgZWMpOworICAgIHB1dFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9w
ZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4
IDIyNzFmZDlhYjlhN2NhZDBlM2EzYjU4YzliOTBlMzg3ZjA4MDk3MjkuLjYyYjdlM2ZjYmNmYjk4
ZmFiMjdlOTk0OGZmYzI1OGRhY2FmZmU3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9v
bCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ24KICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCkpOwogfQogCi1ib29sIEpTRE9NU3RyaW5n
TWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFw
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAg
ICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTg1LDYgKzg1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisgICAgcHV0UmVzdWx0ID0gIWVjOwogICAgIHJldHVybiAhZWM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDE5ZmNhMjUw
NTliNTY2OTgxZDhkMjhkNDdkNTkzNjdkNjRkYmRkNzIuLjljZTg4Mzg1ZWVhN2NmY2M5OTNiMWI5
ZTcwZDE5ODBjNmM2ODE1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcApAQCAtMTAzLDcgKzEwMyw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNl
Ojp1cGRhdGVEb2N1bWVudCgpCiB7CiAgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSk7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5w
cm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9KUyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3Vt
ZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7CisgICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2ludFNldCh0
aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCB0b0pTKGV4ZWMs
IHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSwgcHV0
UmVzdWx0KTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4OGUyZjFhOGMxMjcyODAyYzQ2YWNj
NjY2ZjA3ZDRkYzZlMzliZjcyLi4xNmJiMGQwYTlhZDRmMmViNTIzYjM3NGM2ZTc4ZDdiODY5ZjI5
NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCkBAIC0zNDIsMzIgKzM0MiwzNSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAg
IHJldHVybiBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcih0aGlz
T2JqZWN0LCAqZnJhbWUsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpLCBzbG90
KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
V2luZG93Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOwogICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0
aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgLy8gV2Ugb25s
eSBhbGxvdyBzZXR0aW5nICJsb2NhdGlvbiIgYXR0cmlidXRlIGNyb3NzLW9yaWdpbi4KLSAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9jYXRpb24pCi0g
ICAgICAgICAgICBsb29rdXBQdXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1
ZSwgKnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCBzbG90KTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHJpbnRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sb2NhdGlvbikgeworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChsb29rdXBQdXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0
LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCBzbG90LCBwdXRSZXN1bHQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgdGhpc09iamVjdC0+cHJpbnRFcnJvck1lc3NhZ2UoZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1
cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi12b2lkIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAg
ICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpIHx8ICFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQmFz
ZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93
KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwg
dmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRF
bGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDlkZmJiNGQ1M2VmZWJjN2QzMzNkOTM0YzE4NTUxNTBl
MDY2MzkxM2UuLjIyOWU2ODM5OThlMzkyZTUxNjc0OGU2MjU0N2ZlZmY5ODRlYjg3YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1l
bnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAg
ICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MQXBw
bGV0RWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAot
Ym9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVu
dEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKKyAgICBy
ZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0
aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBKU0hUTUxBcHBsZXRFbGVtZW50
OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20u
Y3BwCmluZGV4IGEyZTkxODMxMGIxZWRhNDllMTdiNWQwODBiOGM0NDllMTE4ZjAxZDIuLjkxOWY2
ODY2MmExMWI1ODJhZGFlYjA4MmFmYzUwYmQ3MjViYTdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcApAQCAt
MzgsOSArMzgsOSBAQCBib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbQogICAgIHJldHVybiBwbHVnaW5F
bGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTEVtYmVkRWxlbWVudCwgQmFzZT4o
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxFbWJlZEVs
ZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxF
bWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBw
dXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRD
dXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCwgcHV0UmVzdWx0
KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwq
IGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggODNmOThmN2Y3
Y2MzZDEwYjUxMzEwNmQ1YzYyOWM1NjQ2ZGNmNzE2Zi4uNGE4NjQ3Zjg5ZWJjNzAwNzI5ZWM4MzBj
YTZkYWM5YjllOGU3MzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgYm9v
bCBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbUdldE93
blByb3BlcnR5U2xvdDxKU0hUTUxPYmplY3RFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50Ojpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewot
ICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9CiAKIENhbGxU
eXBlIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERh
dGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAppbmRleCBiMzNhZDRmNWIxMWRmMzk5N2Q0NTMwZWVjNzIxNTZiZmM1MDEzMjgw
Li4wOWVhZjE3NThlYzYxMGNhYmU5M2EyOWI2NmYwNTg1MzcyYWU3NzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtNjAsOCArNjAs
OSBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0
UmVzdWx0KQogeworICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IHdy
YXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNzUsNyArNzYsNyBAQCBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJs
ZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgIGlmIChz
YW1lRG9tYWluQWNjZXNzKQotICAgICAgICAgICAgSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IEpTT2Jq
ZWN0OjpwdXQodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTM3LDggKzEzOCw5IEBAIEpTVmFsdWUgSlNMb2Nh
dGlvbjo6dG9TdHJpbmdGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS50b1N0cmluZygpKTsKIH0KIAotYm9vbCBK
U0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTTG9j
YXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0
KQogeworICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCA3ZWE3M2Ix
MTEzZDBhZjdjMWNlNzE3YmJiYzg0YTg4MjY3NzA5NTY5Li4yODY1MzcyZTlhZTcxZjRhNWNhNTA0
ZWUwODQ5NTVhYjVlYjE0ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBA
IGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcGx1
Z2luRWxlbWVudEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK2Jvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIEpTSFRNTEVsZW1lbnQq
IGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAg
IEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVu
dCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIXNjcmlwdE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHNj
cmlwdE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcHV0UmVz
dWx0ID0gc2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuaAppbmRleCBkZGEzZDBjOWY1ZjgwNWYzMTcwNzUzOGJkNWI4ODk1ODljOWRkMjU2Li40MTE2
NjFlNmZhZTVmMzk2MjhjZWZhOWE1ZWY3YzE4YWNiNjUyOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaApAQCAtNDEs
NyArNDEsNyBAQAogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5
R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiAgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
JiwgSlNIVE1MRWxlbWVudCopOwotICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTSFRNTEVsZW1l
bnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3Rv
bVB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpT
SFRNTEVsZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7CiAg
ICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCos
IEpTQzo6Q2FsbERhdGEmKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBlLCBjbGFzcyBCYXNl
PiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmIHNsb3QsIFR5cGUqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCAzYWE3ZTk0MzhlY2QxNTliNWJmMGM5YmY1YTJlMzVl
ZGZjZDcwYjYxLi45ZjUyNTYxYjg1ODMyMDU4MGRjYjgzZjFhN2M1ZjFhZjgyM2E5NmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1i
b29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0
b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQog
ewogICAgIC8vIE9ubHkgcGVyZm9ybSB0aGUgY3VzdG9tIHB1dCBpZiB0aGUgb2JqZWN0IGRvZXNu
J3QgaGF2ZSBhIG5hdGl2ZSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUuCiAgICAgLy8gU2luY2UgaGFz
UHJvcGVydHkoKSB3b3VsZCBlbmQgdXAgY2FsbGluZyBjYW5HZXRJdGVtc0Zvck5hbWUoKSBhbmQg
YmUgZm9vbGVkLCB3ZSBuZWVkIHRvIGNoZWNrCkBAIC0xMTksMTMgKzExOSwxNCBAQCBib29sIEpT
U3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIGlmIHRydWUsIHRlbGxzIHRoZSBjYWxsZXIgbm90
IHRvIGV4ZWN1dGUgdGhlIGdlbmVyaWMgcHV0KS4gSXQgZG9lcyBub3QgaW5kaWNhdGUgd2hldGhl
cgogICAgICAgICAvLyBwdXREZWxlZ2F0ZSgpIGRpZCBzdWNjZXNzZnVsbHkgY29tcGxldGUgdGhl
IG9wZXJhdGlvbiBvciBub3QgKHdoaWNoIGl0IGRpZG4ndCBpbiB0aGlzCiAgICAgICAgIC8vIGNh
c2UgZHVlIHRvIHRoZSBleGNlcHRpb24pLgorICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgd3JhcHBlZCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwg
c3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotCisgICAg
cHV0UmVzdWx0ID0gIWVjOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGJlMWY4ZTY4
M2JhYzdjMTY1N2Y5YmZhZDU4Zjc1M2Y4OTE5MDc0YzguLmNiNGNjY2MzZWVkOTIxYmE0MjdlNDk2
ODA0M2ZmMDNlZDAzZjNlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMDQxLDkgKzEwNDEsOSBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKIAogICAgICMgR2V0dGVycwogICAgIGlmICgkb3ZlcnJpZGVzUHV0KSB7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxs
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tTmFtZWRTZXR0ZXIifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6
SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQp
O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0
dGVyIn07CiAgICAgfQogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CkBAIC0yMTQ0LDEyICsyMTQ0
LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5
cGUifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJv
dG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oY2Vs
bCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3Qt
PnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QsIHB1dFJlc3VsdCkpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgIH0KIApAQCAtMjU1OCwyNiArMjU1OSwyNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgaWYgKCRoYXNDdXN0b21TZXR0ZXIpIHsKICAgICAgICAgaWYgKCEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUo
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0
RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJlc3VsdCkpXG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1
dFJlc3VsdDtcbiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAg
ICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4
ZWRTZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFt
ZWRTZXR0ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAk
e2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1
bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdylcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdylcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwpAQCAtMjU4NSwxOCArMjU4Nywx
OSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCA8PSBN
QVhfQVJSQVlfSU5ERVgpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgdGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoc3RhdGUsIGluZGV4LCB2YWx1
ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3Rh
dGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09i
amVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJl
c3VsdCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0
YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0YXRl
LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDY1
Niw4ICs0NjU5LDggQEAgc3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KIAogICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9u
UHJvdG90eXBlIn0pIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
Ym9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYm9vbCBwdXREZWxl
Z2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTtcbiIpOwogICAgIH0KIAogICAg
ICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CmluZGV4IGU3OTZlYTQ3Yjk2YmQ2ODE4ZjJlNTIyNWYyYTEyMmQ3YTMwZjU4ZTkuLmU0YTMxZDM2
NTMzMmU3MWY0ZGVmZGEzN2RjNDdlYTZmODY2OWUwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CkBAIC02MDYsMjMgKzYwNiwyNSBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRQogICAgIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdEludGVyZmFjZTo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmICh0aGlzT2JqZWN0
LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAg
IHJldHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmICh0aGlzT2JqZWN0
LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0
KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTVGVzdEludGVy
ZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVk
IGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1Rlc3RJbnRl
cmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7Ci0gICAgaWYgKHRoaXNPYmpl
Y3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAg
ICAgcmV0dXJuOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1
bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2Vs
bCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmgKaW5kZXggZWE2Y2VjNjJkNWZmZTVmNGJjMDE4NjAxMTQzZmM1NDhkYTAwNTBkYy4uMjRjOTA4
ZjAzNDFiZTRmNTFkNDNkNTJlMTEyZGJlY2IzNDJlM2U1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApA
QCAtNDQsOSArNDQsOSBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RJbnRlcmZhY2UgOiBw
dWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbnRlcmZhY2U+IHsKICAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlKiB0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwotICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXREZWxl
Z2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19ydW50aW1lLmNwcAppbmRleCBiMjMyYjA2NWU5NDI2YTQ2NzA4MTZkNWZiMDlhYTBl
Njc2OGE1N2RjLi4zZWZhNzE0MjE5MWUyNjk0NGMxOGM1MzU1YTBjYjEzZTkxYWY2YTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgSlNWYWx1
ZSBDRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFu
Y2UqIGluc3QpIGNvbnN0CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgQ0Zp
ZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAq
aW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Citib29sIENGaWVsZDo6c2V0VmFsdWVUb0luc3Rh
bmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3QsIEpTVmFsdWUgYVZhbHVl
KSBjb25zdAogewogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxj
b25zdCBDSW5zdGFuY2UqPihpbnN0KTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdGFuY2UtPmdl
dE9iamVjdCgpOwpAQCAtNjksMTQgKzY5LDE3IEBAIHZvaWQgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5z
dGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdCwgSlNWYWx1ZSBhCiAg
ICAgICAgIE5QVmFyaWFudCB2YXJpYW50OwogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFu
dChleGVjLCBhVmFsdWUsICZ2YXJpYW50KTsKIAorICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgICAgICB7CiAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoZXhlYyk7Ci0gICAgICAgICAgICBvYmotPl9jbGFzcy0+c2V0UHJvcGVydHkob2JqLCBfZmll
bGRJZGVudGlmaWVyLCAmdmFyaWFudCk7CisgICAgICAgICAgICByZXN1bHQgPSBvYmotPl9jbGFz
cy0+c2V0UHJvcGVydHkob2JqLCBfZmllbGRJZGVudGlmaWVyLCAmdmFyaWFudCk7CiAgICAgICAg
ICAgICBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAg
ICAgICAgfQogCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmdmFyaWFudCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5oCmluZGV4IDEwNjcyZWQ5ODFiZjliNjg0OGY1
NmQzMzMzNDcyY2ViYzdlYWQ4OTcuLjIxOWZlZmVlNDMxZmQ0YmU3MzEyNjk2ZTk5NDA1YWQ4ODZl
NGRhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIENGaWVsZCA6IHB1YmxpYyBGaWVsZCB7CiAgICAgQ0ZpZWxkKE5QSWRlbnRpZmllciBp
ZGVudCkgOiBfZmllbGRJZGVudGlmaWVyKGlkZW50KSB7IH0KIAogICAgIEpTVmFsdWUgdmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSos
IEpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBOUElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIF9maWVsZElkZW50aWZp
ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggMDAyOTRmYWRk
MDU4YWQ4ZDAzZGY3YWIwY2M1MjRkZmI1ZGYyMjZiMi4uNWZlODVmNWY0YzEzZGI4ZjFiN2JmYzVm
MDc1YzBiOWE1ZGM5ZGU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBA
IC01Miw3ICs1Miw3IEBACiBjbGFzcyBGaWVsZCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1Zh
bHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29u
c3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgfkZpZWxkKCkgeyB9CiB9OwpAQCAtMTA1LDcgKzEwNSw3IEBA
IGNsYXNzIEluc3RhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5JbnN0YW5jZSgpOwogCiAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxCZWdpbigpIHsgfQpAQCAtMTI0LDcgKzEy
NCw3IEBAIGNsYXNzIEFycmF5IHsKICAgICBleHBsaWNpdCBBcnJheShSZWZQdHI8Um9vdE9iamVj
dD4mJik7CiAgICAgdmlydHVhbCB+QXJyYXkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHNldFZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExl
bmd0aCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaAppbmRleCA3Njg5NjZiNDg5OGExNGI3YzNlNzBlOWY5MDU0Y2VhMThkOWY2NjBmLi5iNThk
MWI2MjlmNDgxMDQxNTdhNjI4OTFiMjJlOWUwNTAyZmFhZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBPYmpjRmll
bGQgOiBwdWJsaWMgRmllbGQgewogICAgIE9iamNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKTsKICAg
ICAKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29u
c3QgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNl
KEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpT
VmFsdWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEl2YXJTdHJ1Y3RQdHIgX2l2YXI7CkBAIC03
OCw4ICs3OCw4IEBAIGNsYXNzIE9iamNBcnJheSA6IHB1YmxpYyBBcnJheSB7CiBwdWJsaWM6CiAg
ICAgT2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQg
aW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVB
dChFeGVjU3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNldFZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVl
IGFWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwg
dW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRM
ZW5ndGgoKSBjb25zdDsKICAgICAKICAgICBPYmplY3RTdHJ1Y3RQdHIgZ2V0T2JqY0FycmF5KCkg
Y29uc3QgeyByZXR1cm4gX2FycmF5LmdldCgpOyB9CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3Mg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpj
SW5zdGFuY2UqLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAg
ICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KaW5kZXggYTZjOTAyMzg2MDkwZGViMDkwNTEyNjRlZWRkOTg4OWE4MWU3
OGUwYS4uNTkwZjIyNTNhOTE0MmIyY2U3ZTNkYzFmODA4NjkzNjFiZjdhMGE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMTI1LDcgKzEyNSw3IEBA
IHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHJldHVybiBbd2ViU2NyaXB0T2JqZWN0Q2xhc3MoKSBfY29udmVydFZh
bHVlVG9PYmpjVmFsdWU6dmFsdWUgb3JpZ2luUm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpIHJv
b3RPYmplY3Q6cm9vdE9iamVjdC5nZXQoKV07CiB9CiAKLXZvaWQgT2JqY0ZpZWxkOjpzZXRWYWx1
ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpT
VmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUp
IGNvbnN0CiB7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJ
bnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogICAgIGlkIHZhbHVlID0gY29udmVy
dFZhbHVlVG9PYmpjT2JqZWN0KGV4ZWMsIGFWYWx1ZSk7CkBAIC0xMzgsOSArMTM4LDExIEBAIHZv
aWQgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
bnN0YW5jZSogaW5zdGFuY2UsIEpTCiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKICAgICAgICAgICAgIE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKGV4ZWMpOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNo
KE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29u
XSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKQEAgLTE1MiwxNiArMTU0LDE2
IEBAIE9iamNBcnJheTo6T2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciBhLCBSZWZQdHI8Um9vdE9i
amVjdD4mJiByb290T2JqZWN0KQogewogfQogCi12b2lkIE9iamNBcnJheTo6c2V0VmFsdWVBdChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0
Citib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
dCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCFbX2FycmF5LmdldCgp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zZXJ0T2JqZWN0OmF0SW5kZXg6KV0pIHsK
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkFycmF5IGlzIG5vdCBtdXRhYmxlLiIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gW19hcnJheS5nZXQoKSBj
b3VudF0pIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVS
YW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgLy8gQWx3YXlz
IHRyeSB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhbiBPYmpDIG9iamVjdCwgc28gaXQgY2FuIGJl
IHBsYWNlZCBpbiB0aGUKQEAgLTE3MCw4ICsxNzIsMTAgQEAgdm9pZCBPYmpjQXJyYXk6OnNldFZh
bHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVl
KQogCiAgICAgQHRyeSB7CiAgICAgICAgIFtfYXJyYXkuZ2V0KCkgaW5zZXJ0T2JqZWN0Om9WYWx1
ZS5vYmplY3RWYWx1ZSBhdEluZGV4OmluZGV4XTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4
Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKQEAgLTIyMSw4
ICsyMjUsOSBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggZWY5
OTI0ODI3ODZmNzI1ZDcwZWUxZWRjM2UwNzBjZjZiN2Y4Y2M1ZS4uYzViM2M0ZjdlN2EyMTc5Mjcx
MjFiM2M3ZTdjMGYxYTQ5NjcxYjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcApAQCAtMTExLDMxICsxMTEsMjkgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLAogICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUnVudGltZUFycmF5OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2Ug
ZXJyb3IiKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0
VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+
c2V0VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgCi0gICAgSlNPYmpl
Y3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotdm9pZCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
KQorYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQogewogICAgIFJ1bnRp
bWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKTsKICAgICBp
ZiAoaW5kZXggPj0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJv
ciIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAotICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBp
bmRleCwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKIH0KIAogYm9vbCBSdW50aW1lQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IDU4YmEwNTk2ZTY0OTFhODQ0NjJiZGM2
ZWVkODY0YzU5YTI1OTJlYzEuLjAxOGMxMzI3OGRiYTNkZDAzMTcxZTUzZWZjMGFkN2RmMGUxMDdl
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApAQCAtNTYsOCArNTYsOCBA
QCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggZjdmOThiZjhjMGY1MTVlMmE5OGVj
NmY5ZTcwMTYzOTg0ZTY3NjY0NS4uYTU3M2UwNWQ3NTliMDc1NzBkMjYyMWQ4ZTYyNjAzNjQxY2Ji
NGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0xNjEs
MjUgKzE2MSwyNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcgogICAgIHJldHVybiBpbnN0YW5j
ZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9p
bnN0YW5jZSkgewogICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIFJlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOwogICAgIGluc3Rh
bmNlLT5iZWdpbigpOwogCiAgICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCisg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBGaWVsZCAqYUZpZWxkID0gaW5zdGFuY2UtPmdl
dENsYXNzKCktPmZpZWxkTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSk7CiAgICAg
aWYgKGFGaWVsZCkKLSAgICAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFuY2UoZXhlYywgaW5z
dGFuY2UuZ2V0KCksIHZhbHVlKTsKKyAgICAgICAgcmVzdWx0ID0gYUZpZWxkLT5zZXRWYWx1ZVRv
SW5zdGFuY2UoZXhlYywgaW5zdGFuY2UuZ2V0KCksIHZhbHVlKTsKICAgICBlbHNlIGlmICghaW5z
dGFuY2UtPnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KSkKLSAgICAgICAgaW5zdGFuY2UtPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UtPnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIAogICAgIGluc3RhbmNlLT5lbmQo
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggYjNiNjQwYWNjNTRmMzQ4ZGM1YWZlOTJjNWYzOGZl
NjIyOTQ4NWY4MS4uODFkNGViZDNiNGRiYjcwOTkxMTVkYTEwMjgyYjI5ZmJmZmIxODZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAppbmRl
eCAxM2UzMmJhNjIwZTM1MDdlMDQyYTkwZTgxNzQ0M2Q5M2FmNjNiNjAyLi5hZmJhMTAyMGQ5NWRh
ZWI2M2UxN2M3ZmI5MzIxNDFhZThlOTRkODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFBy
b3h5SW5zdGFuY2UgOiBwdWJsaWMgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UgewogICAgIEpTQzo6
QmluZGluZ3M6OkZpZWxkKiBmaWVsZE5hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKIAogICAgIEpT
Qzo6SlNWYWx1ZSBmaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5n
czo6RmllbGQqKSBjb25zdDsKLSAgICB2b2lkIHNldEZpZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCosIEpTQzo6SlNWYWx1ZSkgY29uc3Q7CisgICAg
Ym9vbCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6
RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OwogICAgIAogCiAgICAgTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5KiBpbnN0YW5jZVByb3h5KCkgeyByZXR1cm4gbV9pbnN0YW5jZVByb3h5OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bQppbmRleCA5Y2QwZmJjMWI0YzI1NGRhNTRjNDE0NmVkZTIwNThkN2NjMGFkYzMyLi42NzE0ZThj
ZjRhYjI3NTM2MGRkNmEwOTkxNDZjNTRkMzA3NWFhYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTgxLDcgKzgxLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5j
ZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNv
bnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgCiAgICAgdWludDY0X3QgbV9zZXJ2
ZXJJZGVudGlmaWVyOwogfTsKQEAgLTkxLDkgKzkxLDkgQEAgSlNWYWx1ZSBQcm94eUZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5j
ZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUHJveHlJbnN0YW5jZSo+KGluc3RhbmNl
KS0+ZmllbGRWYWx1ZShleGVjLCB0aGlzKTsKIH0KICAgICAKLXZvaWQgUHJveHlGaWVsZDo6c2V0
VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNl
LCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorYm9vbCBQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgdmFs
dWUpIGNvbnN0CiB7Ci0gICAgc3RhdGljX2Nhc3Q8Y29uc3QgUHJveHlJbnN0YW5jZSo+KGluc3Rh
bmNlKS0+c2V0RmllbGRWYWx1ZShleGVjLCB0aGlzLCB2YWx1ZSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPnNldEZpZWxkVmFsdWUoZXhl
YywgdGhpcywgdmFsdWUpOwogfQogCiBjbGFzcyBQcm94eU1ldGhvZCA6IHB1YmxpYyBKU0M6OkJp
bmRpbmdzOjpNZXRob2QgewpAQCAtNDE2LDEwICs0MTYsMTAgQEAgSlNDOjpKU1ZhbHVlIFByb3h5
SW5zdGFuY2U6OmZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQp
IGNvbnMKICAgICByZXR1cm4gbV9pbnN0YW5jZVByb3h5LT5kZW1hcnNoYWxWYWx1ZShleGVjLCAo
Y2hhciopQ0ZEYXRhR2V0Qnl0ZVB0cihyZXBseS0+bV9yZXN1bHQuZ2V0KCkpLCBDRkRhdGFHZXRM
ZW5ndGgocmVwbHktPm1fcmVzdWx0LmdldCgpKSk7CiB9CiAgICAgCi12b2lkIFByb3h5SW5zdGFu
Y2U6OnNldEZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQsIEpT
VmFsdWUgdmFsdWUpIGNvbnN0Citib29sIFByb3h5SW5zdGFuY2U6OnNldEZpZWxkVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQsIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2luc3RhbmNlUHJveHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIHVpbnQ2NF90IHNlcnZlcklkZW50aWZpZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBQcm94eUZpZWxkKj4oZmllbGQpLT5zZXJ2ZXJJZGVudGlmaWVyKCk7CiAgICAg
dWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7CkBA
IC00MzQsMTAgKzQzNCwxMSBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OnNldEZpZWxkVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQsIEpTVmFsdWUgdgogICAgIGlmIChtX2lu
c3RhbmNlUHJveHkpCiAgICAgICAgIG1faW5zdGFuY2VQcm94eS0+cmVsZWFzZUxvY2FsT2JqZWN0
KHZhbHVlKTsKICAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICB3YWl0Rm9yUmVwbHk8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlcXVlc3RJRCk7CiAgICAgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Ojptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUHJveHlJbnN0YW5jZTo6aW52YWxpZGF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAKaW5kZXggYTkwNWIzZGYwYjY4YWM0OGVlMmZhMWZjZjJhODdmMDMx
NWFiZDdiZC4uZDU2MWFlMTQ4YzIyZjU5N2Q3ZjFhZTg0Y2I3ZDBkZjkxYzBjYTBhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcApAQCAtMjk3LDI3ICsyOTcsMjcgQEAgYm9vbCBKU05QT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0KSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBOUElkZW50aWZpZXIg
bnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKTsK
ICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KICAgICBpZiAoIW5wSWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAg
aWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5IHx8ICF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KHRoaXNPYmplY3QtPm1fbnBP
YmplY3QsIG5wSWRlbnRpZmllcikpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB0aHJv
dyBhbiBleGNlcHRpb24gaGVyZT8KLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNl
dFByb3BlcnR5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IE5QVmFyaWFudCB2YXJpYW50OwogICAgIHRoaXNPYmplY3QtPm1fb2JqZWN0TWFwLT5jb252ZXJ0
SlNWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHZhbHVlLCB2YXJpYW50KTsKQEAgLTMyNyw5ICszMjcs
MTAgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICAvLyB0aGUgY2FsbCBoYXMgZmluaXNo
ZWQuCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0b3IgcHJvdGVjdG9yKHRo
aXNPYmplY3QtPm1fb2JqZWN0TWFwKTsKIAorICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAg
ewogICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dC
YXNlOjpjb21tb25WTSgpKTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNz
LT5zZXRQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0LCBucElkZW50aWZpZXIsICZ2YXJp
YW50KTsKKyAgICAgICAgcmVzdWx0ID0gdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5z
ZXRQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0LCBucElkZW50aWZpZXIsICZ2YXJpYW50
KTsKIAogICAgICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4
ZWNTdGF0ZShleGVjKTsKIApAQCAtMzM3LDYgKzMzOCw3IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKCiAgICAgfQogCiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKaW5kZXggYTZiYmY3Yzg3YzRjOThhNDZjZTU5ZWNlZmIzNjYwZTA3ZWFiMjRlNi4u
OGJhZmViMDYwYTIxMDY2ZDhlYWE2MDg3NGMwM2FjOTlmMGNmNGJlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
CkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIEpTTlBPYmplY3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQg
cHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273091</attachid>
            <date>2016-03-05 12:25:34 -0800</date>
            <delta_ts>2016-03-06 05:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160306052518.patch</filename>
            <type>text/plain</type>
            <size>367344</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YmE2MTFmNmE4M2M0MzcyYWNlMWVmYTA4N2Q3Mjc1NmY0MGI1MTg5Li45NThlNmM3YWU3MTEwZTg5
ZDkzNWQ0Zjk3ZWU2YzQxMmFkNzc3Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNTkgQEAKIDIwMTYtMDMtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgUmVmbGVjdC5zZXQuCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCBpcyBS
ZWZsZWN0LnNldCByZXF1aXJlcyBib29sZWFuIHJlc3VsdCBvZiBbW1NldF1dLAorICAgICAgICB0
aGlzIGlzIG5vdCBwcm9wYWdhdGVkIGluIHRoZSBwcmV2aW91cyBKU0MgcHV0IGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHV0IGFuZCBwdXRCeUluZGV4
IHNpZ25hdHVyZSBmcm9tIGB2b2lkIHB1dCguLi4pYCBhbmQgYHZvaWQgcHV0QnlJbmRleCguLi4p
YCB0byBgYm9vbCBwdXQoLi4uKWAgYW5kIGBib29sIHB1dEJ5SW5kZXgoLi4uKWAsCisgICAgICAg
IG1vcmUgY29uc2lzdGVudCBzdHlsZSB0byB0aGUgRUNNQTI2MiBzcGVjJ3MgW1tTZXRdXS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5
SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6cHV0KToK
KyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q3VzdG9tR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEN1c3RvbVNldHRlcik6
CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRl
cik6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXQpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpwdXNoKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
Vmlldzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHV0SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0
QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpK
U0NlbGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
Y3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAg
KiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6
cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9i
amVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleCk6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEdldHRlcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRTZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW5kZXhPbkhvbGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dERpcmVjdE1heUJlSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3h5OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHku
aDoKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNo
cG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91
Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAo
SlNDOjpwdXRFbnRyeSk6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVu
dGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpzZXRSZWdFeHBDb25z
dHJ1Y3RvcklucHV0KToKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxp
bmUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwT2Jq
ZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojpw
dXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cE9iamVjdDo6c2V0TGFzdEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5
VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRy
eSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6CisgICAgICAgICogcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmpl
Y3QuaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKworMjAxNi0wMy0wNSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbRVM2XSBTdXBwb3J0IFJl
ZmxlY3QuY29uc3RydWN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDczMzAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRkMmIzY2VmNDhiODA2ZDYwNThiODg4NDQz
YTkwZWZkOGEyNDRlOTMuLjEyOGQ3ZTUyYzcyNzBmMDYxZDIwMzc2NjdhZjAyM2M1YTRiZDQ0MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOTIgQEAKIDIwMTYtMDMtMDUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxl
Y3Quc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
dXN0b21TZXR0ZXIgcmV0dXJucyBib29sZWFuIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSByZXN1
bHQgb2YgW1tTZXRdXS4KKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoaXMgY2hhbmdlLCB0aGlzIHBh
dGNoIG1vZGlmaWVzIHRoZSBDb2RlR2VuZXJhdG9ySlMgYW5kIHRlc3QgcmVzdWx0cy4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhy
b3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxF
bWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9iamVjdEVs
ZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdG9y
YWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0RGVsZWdhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDdXN0
b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpw
dXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb2Rl
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZU5hbWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0
aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0
b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQnl0ZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpD
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28p
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNh
bGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0
YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVw
bGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNh
Y2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RU
eXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU3Jl
YWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVudGltZS5jcHA6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAg
ICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6c2V0VmFsdWVU
b0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0VmFsdWVB
dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dCk6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6
cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKworMjAxNi0wMy0wNSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbRVM2XSBT
dXBwb3J0IFJlZmxlY3QuY29uc3RydWN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDczMzAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA0OTgzOTZmZDBj
ZjlkNjQ4MmI5NmQ5ZTcwODhlZjY5MGIwNTEzNWIuLmFhZmM5NDYwZDBlYTgwMzMwZDYzYmZjNDA4
NGM5OGFiNDQ4Y2U1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNi0w
My0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBb
RVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFzIHRoZSBzYW1lIHRvIE5QSlNPYmplY3QsIHdlIGp1c3QgcHJv
cGFnYXRlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OnNldFByb3BlcnR5LgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5o
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChX
ZWJLaXQ6OlByb3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OlByb3h5SW5zdGFuY2U6OnNldEZpZWxkVmFsdWUpOgorCisyMDE2LTAzLTA1ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtFUzZdIFN1cHBvcnQgUmVm
bGVjdC5jb25zdHJ1Y3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NzMzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmUyNDI1YWVhNTE2N2YyMzQ2ZGUwNjkzNmVl
ODEwNzhlZTVjNjM5Yy4uZjM3Y2YxNDdmMzc2YWIxNDI3YThhNmFjZjk5ZDU3MzM2OTk0ODZiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0
LnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlBK
U09iamVjdDo6c2V0UHJvcGVydHkgbWF5IGNhbGwgYG1ldGhvZFRhYmxlKCktPnB1dGAgb3BlcmF0
aW9uLCBidXQgd2UgaW50ZW50aW9uYWxseSBkbyBub3QgcHJvcGFnYXRlIGl0IHRvIHRoZSBjYWxs
ZXIncyA6OnB1dC4KKyAgICAgICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIGp1
c3QgdXNlIHRoZSByZXN1bHQgb2YgOjpzZXRQcm9wZXJ0eSBjYWxsLgorICAgICAgICBUaGlzIGlz
IGB0cnVlYCB3aGVuIDo6c2V0UHJvcGVydHkgYXR0ZW1wdHMgdG8gY2FsbCBgbWV0aG9kVGFibGUo
KS0+cHV0YC4KKyAgICAgICAgSW4gOjpzZXRQcm9wZXJ0eSwgYWZ0ZXIgY2FsbGluZyBgbWV0aG9k
VGFibGUoKS0+cHV0YCwgOjpzZXRQcm9wZXJ0eSBmdW5jdGlvbiBjbGVhcnMgdGhlIGV4Y2VwdGlv
biBzdGF0ZS4KKyAgICAgICAgU28gdGhpcyBpcyBub3QgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRo
ZSBzaW1wbGUgZGF0YSBwcm9wZXJ0eSBzdG9yZS4gUmF0aGVyLCB0aGlzIGlzIGxpa2UgdGhlIGFj
Y2Vzc29yLgorICAgICAgICBJbiBFQ01BMjYyIFtbU2V0XV0sIGl0IHJldHVybnMgdHJ1ZSBpZiB0
aGVyZSBpcyBhIHNldHRlci4gU28gd2UganVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIDo6
c2V0UHJvcGVydHkuCisgICAgICAgIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSBzZXR0
ZXIgZm9yIHRoZSBnaXZlbiBbW1NldF1dIG9wZXJhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNO
UE9iamVjdDo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5oOgorCisyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCiAgICAgICAgIFtFUzZdIFN1cHBvcnQgUmVmbGVjdC5jb25zdHJ1Y3QKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzMzMAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGFkZGQyMTk4
NjMzOWUzYzFkMGIxZTQwY2UyYmFlN2Y3Y2RiN2Y3NmQuLmU5NTYzZjU0Y2VhOGIyNjNiMTQzMzU2
NzIxZDRjZGRkNzljNWU0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCkBAIC0xODEsOCArMTgxLDggQEAgY2xhc3MgSlNDYWxsYmFja09iamVjdCA6
IHB1YmxpYyBQYXJlbnQgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgCi0gICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDk1MjAzOWRjY2I4NjIyMjBjNTM2MzRkYzZm
NGNjNmE0N2U2NWQ2ZjcuLmE1NTM3MjM0YmIzMmNhNjg2ZGQwNmIyYWZlOWEwN2E5ZDAyNTdmMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC0yMjIsNyArMjIyLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0NhbGxi
YWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsK
ICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0yNDQsMTMgKzI0NCwxMyBA
QAogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsK
ICAgICAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1
ZXMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5
ID0gZW50cnktPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsK
QEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI3Miw5
ICsyNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBnZXRTbG90KSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5KU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJy
aWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0yODQsNyArMjgzLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMzA2LDEzICszMDUsMTMgQEAKICAgICAgICAgICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8
fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRp
Y1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykp
IHsKICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVl
cy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9
IGVudHJ5LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwpAQCAtMzIzLDcg
KzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTMzMSw3ICszMzAsNyBAQAogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRp
Y0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlv
bnMoZXhlYykpIHsKICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9
IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNw
cAppbmRleCBjM2VmYmQ1NmRkNzBkZWFjYTM2MzM5MjRhOTIyOWQzNjEzOTMyMDE1Li4zNjUwMjRl
ODhmMjZhZTE0NmE5ZThiYTRjYzJmNGNiZDVhMzU0YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC05OCwxNSArOTgsMTUgQEAg
Ym9vbCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIERl
YnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3Bl
Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUt
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Nj
b3BlKCkpOwogICAgIHNsb3Quc2V0VGhpc1ZhbHVlKEpTVmFsdWUodGhpc09iamVjdCkpOwotICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
CiBib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmVmNjBjODk5ZjdmMTQ4M2Uz
MmNjN2E4MzgzM2UwYWY5NDA0NzJkYi4uZTM0ZjQ5N2Q3ZmIzMzNhYWVlNzYwOTI0Mzg2NGYzNWMw
YTc4YTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIERlYnVnZ2VyU2NvcGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBj
NDViYmVjMTI5YjZiN2I4MDUzZmRhMDVlNWFiMDZiOGFmODdlYzA3Li5kZGU0OWYwODk3YjhjODMy
MzM4NWVmNjhmMTk3MGRjZGEwYzczZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNDE2LDcg
KzQxNiw3IEBAIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICAgICAg
cmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCBzbG90KTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDIy
YmM0M2Q5Yjk4MjdjYjlmMWQwMjc2ZjcwOWY3ZWE2YzIxMDM3MjcuLmQzNzZiNjMxOWE5NTQwOWNl
YzY5Yjg1MzExY2ZiZTA1OTM4NGU0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCkBAIC00OSwxMCArNDksMTAgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB0eXBlZGVmIENvbnN0cnVjdFR5cGUgKCpHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIpKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBHZXRDb25zdHJ1Y3REYXRhRnVuY3Rpb25QdHIg
Z2V0Q29uc3RydWN0RGF0YTsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uUHRyKShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRGdW5jdGlvblB0cikoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgUHV0RnVuY3Rpb25QdHIgcHV0OwogCi0gICAgdHlwZWRlZiB2
b2lkICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHR5cGVkZWYg
Ym9vbCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUlu
ZGV4RnVuY3Rpb25QdHIgcHV0QnlJbmRleDsKIAogICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVBy
b3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApp
bmRleCA4MjQxZDZlMGMwNzU2NDQ3MWM1YTlkYTUyZTE2ZDFiYTczYmVmOTk1Li40ODFmMTZiM2U5
ZWVhZmJjNTNlN2Q1MTg0ZWM0NTQ0NzFhZDJiMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2
b2lkIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwogfQogCi12b2lkIENsb25lZEFyZ3VtZW50czo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3Vt
ZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTc4LDExICsxNzgsMTAgQEAgdm9pZCBDbG9uZWRBcmd1
bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlk
ZW50LCBKU1YKICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpIHsKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNz
YXJ5KGV4ZWMpOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBzbG90OyAvLyBTaGFk
b3cgdGhlIGdpdmVuIFB1dFByb3BlcnR5U2xvdCB0byBwcmV2ZW50IGNhY2hpbmcuCi0gICAgICAg
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1bW15KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlk
ZW50LCB2YWx1ZSwgZHVtbXkpOwogICAgIH0KICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVkQXJndW1l
bnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIGlkZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAppbmRleCA4ZTcxM2Q1YzZmYTVjYTE4NDEzNGIwNTJiMmQ1ODk5YTI2NzdhMzBl
Li41ZDIyMjE4M2M5ZTcwODMyOTRiMTQxNzZkYTRlZjU2MTk3Y2JiM2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNjIsNyArNjIs
NyBAQCBjbGFzcyBDbG9uZWRBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IDVj
ZTNhMzY5MmQyYjA2YzQzNjM1M2YyMmEyZjM3ZGZiOGFmN2NmM2MuLmJiMTRmYWE0MjA0N2Y0YWQ0
YzU0ZDQwNWJjOTg3NGU1M2UwNTgxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcApAQCAtMzcsMTQgKzM3LDI0IEBACiAK
IGNvbnN0IENsYXNzSW5mbyBDdXN0b21HZXR0ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkN1c3RvbUdl
dHRlclNldHRlciIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQ3VzdG9tR2V0dGVyU2V0dGVy
KSB9OwogCi12b2lkIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGN1
c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogYmFzZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCitib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciBzZXR0ZXIsIGJvb2wg
aXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYm9v
bCByZXN1bHQgPSBzZXR0ZXIoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSkpOworICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBp
cyBhIHNldHRlciBhbmQgaXQgaXMgb2JzZXJ2ZWQgYXMgYW4gYWNjZXNzb3IgdG8gdXNlcnMuCisg
ICAgaWYgKGlzQWNjZXNzb3IpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2Jvb2wgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
Y3VzdG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBiYXNlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6
OkN1c3RvbVNldHRlciBzZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oY3VzdG9t
R2V0dGVyU2V0dGVyKS0+c2V0dGVyKCk7CisgICAgLy8gUmV0dXJuIGZhbHNlIHNpbmNlIHRoZXJl
IGlzIG5vIHNldHRlci4KICAgICBpZiAoIXNldHRlcikKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFpc0FjY2Vzc29yKQogICAgICAgICB0aGlzVmFsdWUg
PSBiYXNlOwotICAgIHNldHRlcihleGVjLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKSk7CisgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywg
c2V0dGVyLCBpc0FjY2Vzc29yLCB0aGlzVmFsdWUsIHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21H
ZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCmluZGV4IGRkZGQ4YzZmYjQzZTc5YTNiZTI5MmVkMmU4NDM3NjM3ZWI2YWQzODgu
LjNkN2QwZTQxM2Y1ODQ2ZWMyNmVmNzkzNzM4MWM1N2JkN2U3ZWJkZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCkBAIC03MCw3
ICs3MCw4IEBAIGNsYXNzIEN1c3RvbUdldHRlclNldHRlciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIEN1c3RvbVNldHRlciBtX3NldHRlcjsKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGN1c3RvbUdldHRlclNldHRl
ciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJhc2UsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBKU1ZhbHVlKTsKK2Jvb2wgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNP
YmplY3QqIHNsb3RCYXNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzLmgKaW5kZXggNjdmMWIwMzQ1ZDcxYjhkMzM2MmY2NmJiNjVlMmRjZjNhMzVkMmFh
NC4uZWRjYzZmMWI5OGQ2ZGFkZjg4OTdlOGFmMmZmMDIyNDQ1MjliM2U1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNDcsOCAr
NDcsOCBAQCBjbGFzcyBHZW5lcmljQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggOWIxODAwMTg1NzgxMDVjNTUx
Njk3MjBhZTU4NzdjM2UzZTI0NmRlZS4uZDJlYjM3MTE1MjEyNjQ1YzMxNmY3OWQ0MmUyM2I3ODBm
ZGRiZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC05Nyw3ICs5Nyw3IEBACiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+Ci12b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTEw
OCwyOCArMTA4LDI3IEBACiAgICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+b3ZlcnJpZGVUaGluZ3Mo
dm0pOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBzbG90OyAvLyBUaGlzIHB1dCBp
cyBub3QgY2FjaGVhYmxlLCBzbyB3ZSBzaGFkb3cgdGhlIHNsb3QgdGhhdCB3YXMgZ2l2ZW4gdG8g
dXMuCi0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1
bW15KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwogICAgIH0KICAgICAKICAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKICAgICBpZiAoaW5kZXggJiYg
dGhpc09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGluZGV4LnZhbHVlKCkpKSB7CiAgICAg
ICAgIHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBUeXBlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRleCkpIHsK
ICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICBy
ZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CmluZGV4IDJjZDY2ZTVjZDQyZmQwMWRiNTJkZTBkNzZiY2Y0ZDIxOTFlZjdjYjkuLjg3MzA3OTRh
MzQyOGY2ZDVlYThlOWEyYjhjYmEyMTRjMTdiYzg0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIEpTVmFs
dWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0
ZXJTZXR0ZXIpCiAgICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGJhc2UsIEFyZ0xpc3QoKSk7CiB9CiAKLXZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsdWUsIEVD
TUFNb2RlIGVjbWFNb2RlKQorYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXJPYmogPSBqc0Nhc3Q8R2V0
dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKTsKIAogICAgIGlmIChnZXR0ZXJTZXR0ZXJPYmotPmlz
U2V0dGVyTnVsbCgpKSB7CiAgICAgICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQogICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgSlNPYmplY3QqIHNldHRlciA9IGdldHRlclNldHRlck9iai0+c2V0dGVyKCk7CkBA
IC0xMDMsNiArMTAzLDcgQEAgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWwKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOwogICAgIGNhbGwoZXhlYywg
c2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2UsIGFyZ3MpOworICAgIHJldHVybiB0cnVl
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggY2QyMDQwMjhlZjljYWUyOWY4MjE0ZmM2YmZhZjNhZWI1
NTZmM2Y5MS4uMmIyMmIzZTBiMGMwMGM5MjdiZjVjYmQ5MDA0OWNmZTkxOGU1MTdiYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTE0NCw3ICsx
NDQsNyBAQCBpbmxpbmUgR2V0dGVyU2V0dGVyKiBhc0dldHRlclNldHRlcihKU1ZhbHVlIHZhbHVl
KQogfQogCiBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGdldHRlclNldHRlcik7Ci1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxTZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSwgRUNN
QU1vZGUpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggYWZkYmUwZGU3NmVkNzlhMmM3MzQzZGE3ZjcxYjA2YTdlYmVkMWE0Zi4uMjYz
MzIzMzRjYzYyNGFkYmY4MzI0NWY1YjNmYmNhYjcyYjM1OTBiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIEpTQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZQogfQogCiAvLyBFQ01BIDE1LjQuNS4xCi12b2lkIEpTQXJyYXk6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0FycmF5OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKIApAQCAtMTk4LDEzICsxOTgsMTIg
QEAgdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0g
dmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50b051bWJlcihleGVjKSAh
PSBzdGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRM
ZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0
aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgfQogCi0gICAgSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gSlNP
YmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAogYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTY0NCw3ICs2NDMsOCBAQCB2
b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAg
ICAKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgdW5z
aWduZWQgb2xkTGVuZ3RoID0gbGVuZ3RoKCk7Ci0gICAgICAgIGlmIChhdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExlbmd0aCwgdmFsdWUsIHRydWUpKSB7CisgICAg
ICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmIChhdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExlbmd0aCwgdmFsdWUsIHRydWUsIHB1dFJlc3Vs
dCkpIHsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgb2xkTGVuZ3Ro
IDwgMHhGRkZGRkZGRnUpCiAgICAgICAgICAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIG9sZExlbmd0
aCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCmluZGV4IDlmMjczODJkZWJkNzE3NWI1MDljMWRmYTQ5NTFiOWViZDJj
YjgyZTYuLmNjZjNiZWUzZGNhNGIzM2FkYTEzNmM0MmRlNzAxY2Q2Y2JhNWE1NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFz
cyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIH0KICAgICAgICAgCiBw
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggMzU5YWU0N2E1MGJlN2VjMjgwMjg3MGM5
Njc3NDg0NjQzMGUzNDRiMS4uNmRkZTRjN2RmZmNhMzIzMzAwYzc4NTc4N2E1Mjc2MGFhYzUwNmNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5j
cHAKQEAgLTc5LDE4ICs3OSwxNiBAQCBib29sIEpTQXJyYXlCdWZmZXI6OmdldE93blByb3BlcnR5
U2xvdCgKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNBcnJheUJ1ZmZlcjo6cHV0KAor
Ym9vbCBKU0FycmF5QnVmZmVyOjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KGNlbGwpOwogICAgIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMs
IHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIGEgcmVhZC1vbmx5
IGFycmF5IGJ1ZmZlciBwcm9wZXJ0eS4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoKQorICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIGEgcmVhZC1vbmx5IGFycmF5IGJ1ZmZlciBwcm9wZXJ0eS4iKTsKICAgICAK
LSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVyOjpkZWZpbmVPd25Qcm9wZXJ0
eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRl
eCBkNjM0ZDczNjNmZTRhNTA4YjhhYjk4MGNmYjA2NWYzMTFhN2FhNmU4Li5mNzY3NTM4Mzc4NDRm
MGE2ZmI1YWM3YzQ5Y2EyOWEzNDUzNDM3OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEpTQXJyYXlC
dWZmZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCAz
YmZjYWYxNTIxOTkyNWI5M2VkNzg3ZjQxNTAxYzliNzdiYjU1YjExLi5kNGI1Y2MwYzQzNmI1ODFi
ZWIxNjk0OGNhNzMyZjAwNjFmNjIxYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xNjQsMTcgKzE2NCwxNSBAQCB2
b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIH0KIAotdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6cHV0KAorYm9vbCBKU0FycmF5QnVm
ZmVyVmlldzo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyVmlldyo+KGNlbGwpOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ1ZmZlcikgewotICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmlj
dE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHBy
b3BlcnR5LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFkLW9u
bHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNBcnJheUJ1ZmZlclZpZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggNTIzYTIwMGZi
YTJkNzcyYzJiNzNmMmQ0YzVmYzY1YzcxMmY2YjliZi4uYjJjZjVhMmIxOTk5ZTVkN2VhMmU4YTQ4
NzVlYmU0NzM4ZTA4OGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgSlNBcnJheUJ1
ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAKaW5kZXggYjlkZDBhNDE3ZDgwM2IwZTQ1ZGFlY2UyODg0NDVlZTEyZGY1
NzgzNi4uYjMxZTU3OTZkMDY3MDE0OGQzZjlmOTFkMDc2YTQwOTIyZDFkNmM1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEyOSwxNCArMTI5
LDEyIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIH0KIAogLy8gRUNNQSA4LjcuMgotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
IAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZh
bHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRo
ZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KICAg
ICBKU09iamVjdCogb2JqID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKQEAgLTE0Nyw3ICsx
NDUsNyBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKHByb3RvdHlw
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQog
ICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTksMTkgKzE1NywxNSBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0g
b2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRl
cigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVl
LCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChncy5p
c0dldHRlclNldHRlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMs
ICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90
U3RyaWN0TW9kZSk7CiAKLSAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigp
KSB7Ci0gICAgICAgICAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRl
cyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZ3MuaXND
dXN0b21HZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEN1c3RvbVNl
dHRlcihleGVjLCBncywgYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhp
c1ZhbHVlKCksIHZhbHVlKTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGlu
ZyBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IG9yIG9uZSBvZiBpdHMgCiAgICAgICAgICAgICAvLyBw
cm90b3R5cGVzIGl0IHNob3VsZCBiZSByZXBsYWNlZCwgc28gYnJlYWsgaGVyZS4KQEAgLTE4NSwy
MiArMTc5LDIyIEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgCiAgICAgaWYgKHNsb3Qu
aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgcmV0dXJuOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
IHsKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KCp0aGlzLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHB1dFRvUHJp
bWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUs
IHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZShl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsK
ICAgICB9Ci0gICAgCi0gICAgaWYgKHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgcmV0dXJuOworICAgIGJvb2wg
cHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyktPmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhlYywgKnRoaXMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgSlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmlu
ZGV4IGNiYmYyNjFmYWYzMDQ5OWJlY2YzODExNDdmYzc4ZTQ5ODUwNGVmODYuLmFkYTgwMjk3Yjg0
NzFmNmJiM2Q5MGU4NDI2Mjk0ZDk2ZDc0ZGZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI4NiwxMSArMjg2LDExIEBAIGNsYXNzIEpTVmFsdWUg
ewogCiAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKSBjb25zdDsKIAotICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgdm9pZCBwdXRJbmxpbmUoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXgoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgIGJvb2wgcHV0SW5saW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0VG9QcmltaXRpdmVC
eUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIHRv
VGhpcyhFeGVjU3RhdGUqLCBFQ01BTW9kZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGNjN2NiOGRmNDc5MzVh
ZGExNDRlMWViZjg2ODEyOWZmNGY5YmRjNTcuLjMzNzJlYTYwMjU1YWEzNzc5MmU0MzNlYThmY2Iy
MjY3ZDRiZmRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaApAQCAtODAzLDQwICs4MDMsMzYgQEAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICByZXR1cm4gZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgc3RhdGlj
X2Nhc3Q8ZG91YmxlPihwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6
OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTVmFsdWU6OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkg
ewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1p
dGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIHJldHVybiBhc0Nl
bGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKU1ZhbHVlOjpw
dXRJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNW
YWx1ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChVTkxJ
S0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChVTkxJ
S0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKICAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsK
ICAgICBhdXRvIHB1dE1ldGhvZCA9IGNlbGwtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQ7
Ci0gICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0gSlNPYmplY3Q6OnB1dCkpIHsKLSAgICAgICAg
SlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBK
U09iamVjdDo6cHV0KSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
b3RoZXJTbG90ID0gc2xvdDsKLSAgICBwdXRNZXRob2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgb3RoZXJTbG90KTsKKyAgICBib29sIHJlc3VsdCA9IHB1dE1ldGhvZChjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhlclNsb3QpOwogICAgIHNsb3QgPSBvdGhlclNs
b3Q7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJ
bmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBib29sIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAg
cHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAg
cmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisKKyAgICByZXR1cm4gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZp
bmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4
IDQ4ZjVhMWEyNjNkYjVmYTMyMjM2NWQyZDkzNGFjYzhjMjc2NmU0NDEuLjZmMTU3MmY4M2Y4NmUx
Yjk5ZGU3NWI2Zjk5MjFmMTM5OGYyMTVlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcApAQCAtMTA0LDI1ICsxMDQsMjMgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
ICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9uZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDZWxsOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3Ry
aW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgewotICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRv
UHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlm
aWVyLCB2YWx1ZSwgc2xvdCk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRv
T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlm
aWVyLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3Qp
OwogfQogCi12b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKICAgICAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwotICAgICAgICBKU1Zh
bHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRl
bnRpZmllciksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
SlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
LSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
T2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApp
bmRleCBlMGRkMTY0NGE2NzNlODc3Njg2Y2JjOGVkMzVlYWM4NTM2MWQ3NjI3Li5lNDE0MzFmZDE4
ZDI5ODRiZDg2MzIxMmYyMjg3NzhmMjg1M2M1NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaApAQCAtMTQ1LDggKzE0NSw4IEBAIGNsYXNzIEpTQ2VsbCB7CiAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsKICAgICBjb25zdCBNZXRob2RUYWJsZSog
bWV0aG9kVGFibGUoKSBjb25zdDsKICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUo
Vk0mKSBjb25zdDsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAgICAKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA0NmJmMWNiYmU5NjI0MTRiYmFmNzg0Y2RlZmIzMzli
M2U0YTI4ZDVjLi45MGM2NGVkNDlkY2Q0MDk1MTdlNDhmZDgyOTQyZTJjZWI1MTVkZWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMTExLDE4
ICsxMTEsMTYgQEAgYm9vbCBKU0RhdGFWaWV3OjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi12b2lkIEpTRGF0YVZpZXc6OnB1dCgKK2Jvb2wgSlNEYXRhVmlldzo6
cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3Ro
Ci0gICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZU9m
ZnNldCkgewotICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVt
cHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3BlcnR5LiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xv
dC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVk
IGFycmF5IHByb3BlcnR5LiIpOwogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNEYXRhVmll
dzo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKaW5kZXggZDY1ZmUyNzVmYWMzNGUxMDU5ZTlmNzI1NWExOGM1ODA2ZmRhNDlmYy4u
Nzc0YjZkMTU4ZjdjNWZmZmM5MDk1OWEzNDQwZGY3ZDFlMWFkZDYzYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBK
U0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKIAogcHJvdGVjdGVkOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZmI4NTA1OWMzYTJjMmU2Yzk4
NWY5ZDIyYzVkNjlmMWJiZDFlNjcyNS4uNzhiNTNlZDdhNGU1ZjMxZWM2YjU5NWQ5MjYxYThhNDE3
YmY4MzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKQEAgLTQyMSwxMyArNDIxLDEyIEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICBCYXNl
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKSB7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQs
IHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dp
bmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgpAQCAtNDM3LDIzICs0MzYs
MjEgQEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1f
cmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlv
biIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBb
W1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90IGRv
bnRDYWNoZSh0aGlzT2JqZWN0KTsKLSAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBkb250Q2FjaGUpOwogICAgIH0KICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpICYmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmFyZ3VtZW50cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxl
cikpIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgdGhlIHByb3BlcnR5IHRvIGJlIHJl
aWZpZWQsIGlmIHRoaXMgaXMgbm90IGFscmVhZHkgdGhlIGNhc2UhCiAgICAgICAgIGJvb2wgb2th
eSA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQob2theSwgb2theSk7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
dGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChleGVjLCBwcm9wZXJ0eU5hbWUp
OwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGJlOTIxMDE0
MTgzOWM4MTg4ZmI0MTgzMGQ5MjRhN2VkMjk2ZDhhNjIuLmU4MDFjYTViMTdlYWQyNGNjOTFhNDRj
Y2NhNmEyZjQxN2VlMDlkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKQEAgLTE2OSw3ICsxNjksNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpT
Q2FsbGVlIHsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9
IEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4
IDg1ODkzOTJhZmNkYTFmNWIwMTk3ZGM0OTU5YTI0N2UyZGIwZmJhM2QuLjQwN2E3MTJmNTg4ZDBh
ZjgyMzIwYjU5OGEyMjk3ZjFkY2IzODk3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjc0LDEyICsy
NzQsMTIgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1
ZmZlclZpZXcgewogICAgIGZyaWVuZCBzdHJ1Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBi
NmM2YWVkODgxNGE5YWIyZGNjZDIwZTYxMWU2N2M0ZjlkOWNiYTkxLi5hODBhYzYwMTljYjkwYTZj
YjZmYWFmODhmMzE3ODQzM2I0ZDhlYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzAzLDE4ICszMDMsMTYgQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXZv
aWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKK2Jvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKICAgICAK
LSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCisgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZh
bHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAKLSAgICBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJu
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTM2NCwxOSArMzYyLDE3IEBACiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci12b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6cHV0QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+
IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVl
KHRoaXNPYmplY3QpLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dCgKLSAgICAgICAgICAgIHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwg
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7
CiAgICAgfQogICAgIAotICAgIHRoaXNPYmplY3QtPnNldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRJbmRleChleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50LmNwcAppbmRleCA2ZDE3NjA4NmVhZDM5MzNkYzAxY2I3NzJmN2QzYTE1OTQyZmJk
MGY2Li5lZmZlYmZiNDUxNTExMzFmYTA1ODU0NTQ1ODViMzQ4MGU2NTc5NzA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCkBAIC0zOCwxMyArMzgsMTUgQEAgYm9vbCBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSoKICAgICByZXR1cm4gc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotdm9pZCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAgICAg
Ym9vbCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHkgPSB0cnVlOwogICAg
IGJvb2wgaWdub3JlQ29uc3RBc3NpZ25tZW50RXJyb3IgPSBzbG90LmlzSW5pdGlhbGl6YXRpb24o
KTsKLSAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhbHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJv
cGVydHksIGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9yKTsKKyAgICBib29sIHB1dFJlc3VsdCA9
IGZhbHNlOworICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29u
c3RQcm9wZXJ0eSwgaWdub3JlQ29uc3RBc3NpZ25tZW50RXJyb3IsIHB1dFJlc3VsdCk7CisgICAg
cmV0dXJuIHB1dFJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuaAppbmRleCA2NDNmMDk1ZGQxOTc5OWU1YWEzMjYwYjM5ODJhOWE5M2U1NmJmNTMwLi44ZDRm
ZDJlMDQ2MTUwMGU4MmRjY2Q2ODBiMWFjMTZjZjFkNmYwNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzeW1i
b2xUYWJsZSgpLT5zaXplKCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxOTgyY2IzZTM1NjlkMzkzOTdjYTM0Nzdh
NmI0OWYxOTIxMzdmNGU3Li5hNTA0MGNiZmM0YjM0NDdkNmVmNjk4YzYwNWIzNjY0MDM5ZTIyMGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC02MjAsMTYgKzYyMCwxNyBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNMZWdhY3lQ
cm9maWxlcigpIGNvbnN0CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1
cHBvcnRzTGVnYWN5UHJvZmlsaW5nKHRoaXMpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2Vs
bCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9
PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yID0gc2xvdC5pc1N0cmljdE1vZGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJy
b3JzID0gZmFsc2U7Ci0gICAgaWYgKHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGJv
b2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBv
aW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAgICAg
IHJldHVybiBwdXRSZXN1bHQ7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCA5ZmM2NTk3OTRiMjllN2FiODA4YWMxYzhjMjk5Mzc5MWNl
MDZiMmQzLi44M2VlMzgxM2U4YWM5OGEzN2EyMmNlYjk0N2VmYzE4OTQ1NjIyZGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQwMSw3
ICs0MDEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5l
U2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0
dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZTk5YmJiYTg5
ZDlkZDY5NDM5NzdjMTIyODUyMTA0N2RkNWQ3NDJlNC4uODI5MDFhNzk0NGRiYTY0YTEyMDFkZjE1
NDk1NmQ0ZmE0MjM1NDJhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtODAsMjEgKzgwLDIyIEBAIGJvb2wg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTGV4aWNh
bEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpo
ZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3Qp
KTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gc2xvdC5pc1N0cmljdE1v
ZGUoKSB8fCB0aGlzT2JqZWN0LT5pc0xleGljYWxTY29wZSgpOwogICAgIGJvb2wgaWdub3JlUmVh
ZE9ubHlFcnJvcnMgPSBmYWxzZTsKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0
Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzKSkKLSAgICAgICAgcmV0dXJu
OworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHN5bWJvbFRhYmxlUHV0SW52
YWxpZGF0ZVdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVz
dWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKIAogICAgIC8vIFdlIGRvbid0IGNhbGwg
dGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNlIF9fcHJvdG9fXyBhbmQgZ2V0dGVyL3NldHRlciAK
ICAgICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tc3RhbmRhcmQgZXh0ZW5zaW9ucyB0aGF0IG90aGVy
IGltcGxlbWVudGF0aW9ucyBkbyBub3QKICAgICAvLyBleHBvc2UgaW4gdGhlIGxleGljYWxFbnZp
cm9ubWVudCBvYmplY3QuCiAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkpOwotICAgIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52
bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCiBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CmluZGV4IGM0MGFlODczOTVjYzMxMjJkNjgwMzFlYzJmM2ZjZDU0ODdlMGQ4YzUuLjUxNWUxMTc5
YzYxNDQwMjdmM2Q2MWY4NjI2YmYzNDBiOGIzYmRiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtNjcsNyArNjcs
NyBAQCBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVj
b3JkIHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRl
eCBmMDhmZTNkMDJiOTljODMzYjU1MTczZWI1NDA4NGMxZTIwNDM1MGZiLi4wNGIwOGY0ZDE4OTU5
MmIzMjE4ZDcyZTczNGFjNzFlOWVjZGYxOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTA4LDE0ICsxMDgs
MTQgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJheSwg
bW9kZSk7CiB9CiAKLXZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwp
OwogICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgogICAgIEpTTW9k
dWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNv
cmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3Bl
cnR5TmFtZS51aWQoKSkpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNv
cmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmgKaW5kZXggZjdlZmE2MjYzYjJiMjc0OWY3ODhjMGE3ZjA3M2Y3Njc3YTAwOWIw
My4uNDM0YmI3YzNmOGEyMWFlYjhkOWVmNTljMjJhZmUxYjA0NjVmMzM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAt
NzcsNyArNzcsNyBAQCBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNh
bEVudmlyb25tZW50IHsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMGZlOWMzMjY2ZmFjYTg3NDgyZTAyYTFmYWM2YmFh
OWMzMzA5ZGI4Ny4uNDBkZGE3MzMzZmY3MjBhZGY2MDk4ZmY0Nzc1NzJmMWViMTg2YWVhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcApAQCAtMTUxLDE3ICsxNTEsMTkgQEAgYm9vbCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQt
cC12LXJlY2VpdmVyCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDM3ZTY0MmU4NzRhNDZkMTNm
NDY1ZTFhN2Q3YzdkZTQxY2Y3YjI3ZDEuLjhjZmVjZmQwYTQ1YjUwNGU2ZWFlNzQ3OWI1M2QxMThm
NDcyNjY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNDYsOCArNDYsOCBAQCBjbGFzcyBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggMWNjNDkzNzVkNGYyY2YyZWM3ZTJl
MDFiYmE3YmI4YTkxNDdmODRmZi4uN2I3YjMyM2U5OGE5MWExOTgyYWFjMDU2MzZjMWFhOWQ5Nzgx
ZDI0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcApAQCAtNzg2LDcgKzc4Niw4IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRp
YXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAg
ICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0
ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBz
eW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywg
aW1wb3J0RW50cnkubG9jYWxOYW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7Cisg
ICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVu
dHJ5LmxvY2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBp
bXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
KTsKICAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CkBAIC04MTYsOCArODE3
LDEwIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNT
dGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJp
YWJsZSA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKICAgICAgICAgVmFy
T2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOwotICAgICAgICBpZiAoIW9mZnNldC5p
c1N0YWNrKCkpCi0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCht
b2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJs
ZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgpLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Ig
Ki8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICBpZiAo
IW9mZnNldC5pc1N0YWNrKCkpIHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZp
cm9ubWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0
KCkpLCBqc1VuZGVmaW5lZCgpLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2Us
IC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCkBAIC04MzcsNyArODQw
LDggQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0
YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgICAgICAgICAgICAgdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLT5zb3VyY2UoKSksIG1vZHVsZUVudmlyb25tZW50KTsKLSAgICAgICAgICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgLyogc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0
cnVlKTsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBz
eW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1
ZSwgcHV0UmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAppbmRleCBhZjQ3MzdlOWIwMmY1NzEwMzA2
NWVlN2Q4ZTdiYTA0MGRlYzBkMmFjLi5jYjUxNWQ4NDQyNWEyYjNjYmE4OTU1YzhlNjIxODQxYjlj
NzI0NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2Jq
ZWN0LmNwcApAQCAtNTgsMTQgKzU4LDE2IEBAIGJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiti
b29sIEpTTm90QW5PYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSAsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChl
eGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IEpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCwgSlNWYWx1ZSwgYm9vbCkKK2Jvb2wgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sKQogewogICAgIEFT
U0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaAppbmRleCAwYzI2ZWM5OGI2ZmIxN2E4MWNlYzk1OWY3MWQ1YWNj
NDQ4YTQ1N2UyLi45YzQ3OTQzZTIxMWFkZWNhY2NhZjlhZDJmMGUzMDFlZmUyY2IzZGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC02OSw4
ICs2OSw4IEBAIGNsYXNzIEpTTm90QW5PYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJmNTJhMWY5NWJhYTAxNjk2ZTQyMjlj
YzllYmFkNDMyZjg3MWU3MzguLjFjNDllNjUxMzRhYzUyY2ViOThjYjVmNzdhZGRhZDQ2NzA1YzM1
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTM3
OSwxMiArMzc5LDEyIEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKIH0KIAogLy8gRUNNQSA4LjYu
Mi4yCi12b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKyAgICByZXR1cm4gcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCkBAIC0zOTcsMjMg
KzM5NywyMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7CiAgICAgICAgICAg
ICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIo
ZXhlYywgdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRl
cihleGVjLCB0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2Rl
IDogTm90U3RyaWN0TW9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlU2V0dGVy
KG9iaiwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChncy5pc0N1c3Rv
bUdldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbEN1c3RvbVNldHRlcihleGVj
LCBncywgYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCks
IHZhbHVlKTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIo
ZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1
ZSgpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nl
c3NvcikKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUo
b2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIShhdHRyaWJ1dGVzICYgQWNjZXNz
b3IpKTsKIApAQCAtNDIzLDE2ICs0MjMsMTMgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xv
dyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAg
ICAgICAgfQogICAgICAgICBpZiAoIW9iai0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKSB7CiAg
ICAgICAgICAgICBpZiAob2JqLT5jbGFzc0luZm8oKS0+aGFzU3RhdGljU2V0dGVyT3JSZWFkb25s
eVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+
ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHV0RW50cnkoZXhlYywgZW50cnksIG9iaiwgdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVudHJ5ID0gb2JqLT5maW5kUHJvcGVydHlIYXNoRW50
cnkocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1dEVudHJ5KGV4
ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChvYmotPnR5cGUoKSA9PSBQcm94eU9iamVj
dFR5cGUgJiYgcHJvcGVydHlOYW1lICE9IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90
bykgewogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4ob2JqKTsKLSAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQpA
QCAtNDQxLDE4ICs0MzgsMjEgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICB9CiAgICAg
CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0
b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpcyk7Ci0gICAgaWYg
KCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
MCwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OworICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFY
X0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3Vs
ZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNs
b3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09i
amVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTQ2MiwxNSArNDYyLDEzIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6IHsKICAg
ICAgICAgdGhpc09iamVjdC0+Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZtKCksIHZh
bHVlKTsKICAgICAgICAgLy8gUmVsb29wLgotICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgewogICAgICAgICAgICAg
dGhpc09iamVjdC0+Y29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOwotICAg
ICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHV0QnlJ
bmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAg
ICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgfQpAQCAtNDgyLDIyICs0ODAsMjAgQEAg
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtw
cm9wZXJ0eU5hbWVdLnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAgICAgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFtZSArIDEpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1i
ZXIoKSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydERvdWJsZVRvQ29udGlndW91
cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8vIFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5
SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAg
IGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZh
bHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+
Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8vIFJl
bG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0
dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogICAgICAgICB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVj
dC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkKQEAgLTUwNSw3ICs1MDEsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW3Byb3BlcnR5TmFtZV0gPSB2
YWx1ZUFzRG91YmxlOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+cHVi
bGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChwcm9w
ZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgpAQCAtNTI3
LDcgKzUyMyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICsrc3RvcmFn
ZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xvdC5zZXQo
ZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgpAQCAtNTQyLDI2ICs1MzgsMjggQEAgdm9pZCBKU09iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLAogICAgICAgICAKICAgICAgICAgLy8gVXBkYXRlIGxlbmd0aCAmIG1fbnVtVmFsdWVzSW5W
ZWN0b3IgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGxlbmd0aCkg
ewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgbGVuZ3RoID0g
cHJvcGVydHlOYW1lICsgMTsKICAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgp
OwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICB9
IGVsc2UgaWYgKCF2YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5hdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBib29s
IHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsK
ICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
ICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVu
dGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKFZN
JiB2bSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMTI0Myw3ICsxMjQxLDcgQEAgYm9vbCBK
U09iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+YWxsb3dzQWNjZXNzRnJvbShn
bG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldHRlciwgdW5z
aWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0dGVyLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRl
c2NyaXB0b3Iuc2V0R2V0dGVyKGdldHRlcik7CkBAIC0xMjU0LDEwICsxMjUyLDEwIEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgZ2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAg
ICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5lT3duUHJv
cGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAg
cmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0
b3Iuc2V0U2V0dGVyKHNldHRlcik7CkBAIC0xMjY4LDI3ICsxMjY2LDI1IEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgc2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAgICAgICAg
ZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5lT3duUHJvcGVydHko
dGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgcmV0dXJu
IGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
ZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgKGF0
dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXREaXJlY3RJbmRleChl
eGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhMaWtl
UHV0RGlyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4g
cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0ZXMsIFB1
dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgIHJl
dHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21B
Y2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nl
c3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzLCBzbG90KTsKIAogICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6
Ok5ld1Byb3BlcnR5KTsKIApAQCAtMTI5NiwxOCArMTI5MiwyMCBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdQogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVy
ZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICBzdHJ1Y3R1cmUtPnNldEhh
c0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVjayhwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdElu
dGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcywgc2xvdCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSh2bSk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgc3RydWN0dXJl
LT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogCiAgICAgc3RydWN0dXJlLT5zZXRI
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogLy8gSGFzUHJvcGVydHkoTywgUCkgZnJvbSBTZWN0aW9uIDcuMy4xMCBvZiB0aGUgc3BlYy4K
QEAgLTE4MjcsNyArMTgyNSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0
dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBnCiAgICAgc2xvdC5z
ZXRDYWNoZWFibGVHZXR0ZXJTbG90KHRoaXMsIGF0dHJpYnV0ZXMsIGpzQ2FzdDxHZXR0ZXJTZXR0
ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRJbmRl
eGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5N
YXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgUHJvcGVydHlEZXNjcmlw
dG9yJiBvbGREZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3Jp
cHRvcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gbWFwID0gbV9idXR0
ZXJmbHkuZ2V0KHRoaXMpLT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7CkBAIC0x
ODM4LDcgKzE4MzYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogICAgICAgICBlbHNlIGlm
IChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICBlbnRy
eUluTWFwLT5zZXQodm0sIG1hcCwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGVudHJ5SW5NYXAt
PmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGRE
ZXNjcmlwdG9yKSAmIH5BY2Nlc3NvcjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KSB7CkBAIC0xODYxLDExICsxODU5LDEyIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hCiAKICAg
ICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGFjY2Vzc29yKTsKICAgICAgICAgZW50cnlJ
bk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50
KG9sZERlc2NyaXB0b3IpICYgflJlYWRPbmx5OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIEFTU0VSVChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2Ny
aXB0b3IoKSk7CiAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmli
dXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAvLyBEZWZpbmVkIGluIEVTNS4xIDguMTIuOQpAQCAtMjAwNCw3ICsyMDAzLDcgQEAgdm9p
ZCBKU09iamVjdDo6ZGVhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKCkKICAgICAgICAgYXJyYXlTdG9y
YWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOwogfQogCi1ib29sIEpTT2JqZWN0OjphdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9y
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAg
ICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAgICAvLyBUaGlzIGhh
cyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90eXBlcyBhcyBKU09iamVj
dDo6cHV0KCkuIEl0IG9ubHkKQEAgLTIwMTYsMTQgKzIwMTUsMTQgQEAgYm9vbCBKU09iamVjdDo6
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIEoKICAgICAgICAgaWYgKHN0b3JhZ2UgJiYgc3RvcmFnZS0+bV9zcGFyc2VNYXApIHsK
ICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzdG9yYWdl
LT5tX3NwYXJzZU1hcC0+ZmluZChpKTsKICAgICAgICAgICAgIGlmIChpdGVyICE9IHN0b3JhZ2Ut
Pm1fc3BhcnNlTWFwLT5ub3RGb3VuZCgpICYmIChpdGVyLT52YWx1ZS5hdHRyaWJ1dGVzICYgKEFj
Y2Vzc29yIHwgUmVhZE9ubHkpKSkgewotICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLnB1dChl
eGVjLCB0aGlzVmFsdWUsIHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmdldCgpLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOworICAgICAgICAgICAgICAgIHB1dFJlc3VsdCA9IGl0ZXItPnZhbHVlLnB1dChleGVj
LCB0aGlzVmFsdWUsIHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnQtPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUpIHsK
ICAgICAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGN1
cnJlbnQpOwotICAgICAgICAgICAgcHJveHktPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc1Zh
bHVlLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICAgICAgcHV0UmVzdWx0ID0gcHJv
eHktPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc1ZhbHVlLCBpLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0y
MDM1LDE3ICsyMDM0LDE3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgfQogfQogCi1i
b29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jv
b2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29s
JiBwdXRSZXN1bHQpCiB7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZSgp
OwogICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIHJldHVybiBhc09iamVjdChwcm90b3R5cGVWYWx1ZSktPmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhlYywgdGhpcywgaSwgdmFsdWUs
IHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gYXNPYmplY3QocHJvdG90eXBlVmFsdWUpLT5hdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIGks
IHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8SW5kZXhpbmdU
eXBlIGluZGV4aW5nU2hhcGU+Ci12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBBU1NFUlQoKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09
IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsK
QEAgLTIwNTksMTYgKzIwNTgsMTUgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW4KICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIAogICAgIGlmIChpID4gTUFYX1NUT1JBR0VfVkVDVE9SX0lO
REVYCi0gICAgICAgIHx8IChpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgKLSAgICAgICAgICAg
ICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFw
ZT4oYnV0dGVyZmx5KSkpCisgICAgICAgIHx8IChpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgg
JiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBl
PihidXR0ZXJmbHkpKSkKICAgICAgICAgfHwgaW5kZXhJc1N1ZmZpY2llbnRseUJleW9uZExlbmd0
aEZvclNwYXJzZU1hcChpLCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKSkgewogICAgICAgICBB
U1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwogICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2VT
bG93KHZtKTsKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gYWxsb2NhdGVTcGFy
c2VJbmRleE1hcCh2bSk7Ci0gICAgICAgIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFs
dWUsIGZhbHNlKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRo
aXMsIGksIHZhbHVlLCBmYWxzZSk7CiAgICAgICAgIEFTU0VSVChpID49IGFycmF5U3RvcmFnZSgp
LT5sZW5ndGgoKSk7CiAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5zZXRMZW5ndGgoaSArIDEpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgZW5z
dXJlTGVuZ3RoKHZtLCBpICsgMSk7CkBAIC0yMDc5LDMxICsyMDc3LDMyIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3Rh
dGUqIGV4ZWMsIHVuCiAgICAgY2FzZSBJbnQzMlNoYXBlOgogICAgICAgICBBU1NFUlQodmFsdWUu
aXNJbnQzMigpKTsKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtpXS5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAKICAgICBjYXNlIERvdWJsZVNoYXBlOiB7CiAgICAgICAgIEFTU0VS
VCh2YWx1ZS5pc051bWJlcigpKTsKICAgICAgICAgZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1
ZS5hc051bWJlcigpOwogICAgICAgICBBU1NFUlQodmFsdWVBc0RvdWJsZSA9PSB2YWx1ZUFzRG91
YmxlKTsKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSB2YWx1ZUFz
RG91YmxlOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIENvbnRpZ3VvdXNTaGFwZToKICAgICAgICAgYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAogLy8gRXhwbGljaXQgaW5zdGFudGlh
dGlvbnMgbmVlZGVkIGJ5IEpTQXJyYXkuY3BwLgotdGVtcGxhdGUgdm9pZCBKU09iamVjdDo6cHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPEludDMyU2hhcGU+KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4o
RXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUpOwotdGVtcGxhdGUgdm9pZCBKU09iamVjdDo6
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNT
aGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUpOwordGVtcGxhdGUgYm9vbCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPEludDMy
U2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3Vi
bGVTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUpOwordGVtcGxhdGUgYm9vbCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENv
bnRpZ3VvdXNTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUpOwogCi12b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cs
IEFycmF5U3RvcmFnZSogc3RvcmFnZSkKK2Jvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTIxMzAsMTIgKzIxMjksMTEgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgICAgIHN0b3JhZ2UgPSBhcnJheVN0b3JhZ2Uo
KTsKICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldCh2bSwgdGhpcywgdmFsdWUp
OwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBw
cm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCiAgICAgICAg
IG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoZXhlYy0+dm0oKSk7Ci0gICAgICAgIG1hcC0+
cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBtX2xlbmd0aCBpZiBuZWNlc3Nh
cnkuCkBAIC0yMTQ1LDcgKzIxNDMsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVucwogICAgICAg
ICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgp
KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBsZW5ndGggPSBpICsgMTsKICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0
aCk7CkBAIC0yMTU0LDEwICsyMTUyLDggQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAv
LyBXZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgbWFwIC0gY2hlY2sgd2hldGhlciB3ZSBzdGlsbCB3
YW50IHRvIGJlIGRvaW5nIHNvLgogICAgIC8vIFdlIHdpbGwgY29udGludWUgIHRvIHVzZSBhIHNw
YXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBpcyBzZXQsIGEgdmVjdG9yIHdvdWxkIGJlIHRvbyBzcGFy
c2UsIG9yIGlmIGFsbG9jYXRpb24gZmFpbHMuCiAgICAgdW5zaWduZWQgbnVtVmFsdWVzSW5BcnJh
eSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyBtYXAtPnNpemUoKTsKLSAgICBpZiAo
bWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1W
YWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwgbGVuZ3Ro
KSkgewotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgp
IHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwg
IWluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpCisgICAgICAgIHJldHVy
biBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAg
ICAvLyBSZXJlYWQgbV9zdG9yYWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUg
bV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CkBAIC0y
MTc1LDkgKzIxNzEsMTAgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICBpZiAoIXZhbHVl
U2xvdCkKICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgIHZhbHVl
U2xvdC5zZXQodm0sIHRoaXMsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0
OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogCkBAIC0yMTg3LDI1ICsyMTg0LDIyIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
CiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOiB7CiAgICAgICAgIGlmIChpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpIHsKLSAg
ICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAor
ICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlT
dG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdywKICAg
ICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJ
bmRleGluZ01vZGUodm0pKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChpbmRleElzU3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIDApIHx8
IGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgcHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCisgICAgICAgICAgICByZXR1cm4gcHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAg
ICAgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAs
IDApKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CiAgICAgICAgICAgICAvLyBDb252ZXJ0
IHRoZSBpbmRleGluZyB0eXBlIHRvIHRoZSBTbG93UHV0QXJyYXlTdG9yYWdlIGFuZCByZXRyeS4K
ICAgICAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxl
bmd0aCgwLCAwLCBpICsgMSkpOwotICAgICAgICAgICAgcHV0QnlJbmRleCh0aGlzLCBleGVjLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBy
ZXR1cm4gcHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBjcmVhdGVJbml0aWFsRm9yVmFsdWVBbmRTZXQodm0s
IGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CkBAIC0y
MjEzLDM4ICsyMjA3LDMzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsK
LSAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPElu
dDMyU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPEludDMyU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKICAgICAgICAgCi0gICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0g
ICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxEb3Vi
bGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgorICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihleGVjLCBpLCB2
YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
IHsKLSAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVz
PENvbnRpZ3VvdXNTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICB9
CisgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJu
IHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3Vz
U2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKICAgICAgICAgCiAgICAgY2FzZSBOb25BcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZTogewogICAgICAgICAvLyBObyBvd24gcHJvcGVydHkgcHJlc2VudCBpbiB0aGUgdmVjdG9yLCBi
dXQgdGhlcmUgbWlnaHQgYmUgaW4gdGhlIHNwYXJzZSBtYXAhCiAgICAgICAgIFNwYXJzZUFycmF5
VmFsdWVNYXAqIG1hcCA9IGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKTsKLSAgICAg
ICAgaWYgKCEobWFwICYmIG1hcC0+Y29udGFpbnMoaSkpICYmIGF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGUoZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCEo
bWFwICYmIG1hcC0+Y29udGFpbnMoaSkpICYmIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhP
bkhvbGUoZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAgICAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgfQogCiAgICAg
Y2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0
b3JhZ2U6Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdywgYXJyYXlTdG9yYWdlKCkpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdywgYXJyYXlTdG9yYWdlKCkp
OwogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1
dERpcmVjdEluZGV4TW9kZSBtb2RlLCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCkBAIC0yNDE4LDE1
ICsyNDA3LDE1IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWCiAgICAgfQogfQogCi12b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgbmFtZS5zdHJpbmcoKSwgbmF0aXZlRnVuY3Rpb24s
IGludHJpbnNpYyk7CiAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNz
b3IsIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZt
LCBuYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5z
aWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKICAg
ICBpZiAoIW5hbWUpCkBAIC0yNDM0LDcgKzI0MjMsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bgogICAgIEFTU0VSVChuYW1lKTsKIAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljKTsKLSAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwg
ZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBwdXREaXJlY3Qodm0sIHByb3BlcnR5
TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCiBKU0Z1bmN0aW9uKiBKU09iamVjdDo6
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtMjc0NSwxMiAr
MjczNCwxMSBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRhcmdldCwgUHJvcGVydHlOYW1lIHByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCi0gICAgICAgIHB1dERpcmVjdEluZGV4KGV4ZWMs
IGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIHB1dERpcmVjdChleGVj
LT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KGV4
ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogfQogCiBjbGFzcyBEZWZpbmVPd25Qcm9w
ZXJ0eVNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4
IGQ2MDYyNzhiN2E2OWNiNDc4NjM4YjE3MTgzMWNmM2E3Y2M4MjMyNmEuLjJmMzA4Nzc4MWUyYjNk
NjYzNWQxZjlkNjFkNDQ0NTVmMmM1ODU1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaApAQCAtMTU4LDE4ICsxNTgsMTggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LmdldCh0aGlzKS0+dmVjdG9y
TGVuZ3RoKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dElubGluZShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dElubGluZShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBw
dXRCeUluZGV4SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBw
dXRCeUluZGV4SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAgICAgaWYgKGNhblNl
dEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBtZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CisgICAgICAgIHJldHVybiBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiAgICAgfQogICAgICAgICAKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHB1dERpcmVj
dCogbWV0aG9kczoKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIH0KIAogICAgIC8vIEEgbm9uLXRocm93aW5nIHZlcnNpb24gb2YgcHV0RGly
ZWN0IGFuZCBwdXREaXJlY3RJbmRleC4KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERp
cmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlKTsKICAgICAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRl
cigpIGNvbnN0CiAgICAgewpAQCAtNDg0LDE1ICs0ODQsMTUgQEAgY2xhc3MgSlNPYmplY3QgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAvLyAgLSBhY2Nlc3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAg
Ly8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHBy
b3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKICAgICAvLyAgLSB0
aGUgcHJvcGVydHkgbmFtZSBpcyBhc3N1bWVkIHRvIG5vdCBiZSBhbiBpbmRleC4KLSAgICB2b2lk
IHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDApOwotICAgIHZvaWQgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgIGJvb2wgcHV0RGlyZWN0KFZN
JiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICB2b2lkIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgdm9pZCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICB2
b2lkIHB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJl
Y3RDdXN0b21BY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBib29sIHB1dERpcmVj
dEFjY2Vzc29yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3RDdXN0b21BY2Nl
c3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAK
LSAgICB2b2lkIHB1dEdldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQgcHV0U2V0dGVyKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRHZXR0
ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICBib29sIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQ
cm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KSBjb25zdDsKQEAgLTYxOCw4ICs2MTgsOCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIHZvaWQgcHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBK
U1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldCh2bSwgdGhpcywg
dmFsdWUpOyB9CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGly
ZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBJZGVudGlmaWVy
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwg
TmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNp
Z25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CkBAIC02OTAsNyArNjkwLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAvLyBpcyBlcXVpdmFsZW50IHRvOgogICAgIC8vCiAgICAgLy8gZm9vLT5h
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKC4uLik7Ci0gICAgYm9vbCBhdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclBy
b3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAg
ICAKICAgICAvLyBSZXR1cm5zIDAgaWYgaW50MzIgc3RvcmFnZSBjYW5ub3QgYmUgY3JlYXRlZCAt
IGVpdGhlciBiZWNhdXNlCiAgICAgLy8gaW5kZXhpbmcgc2hvdWxkIGJlIHNwYXJzZSwgd2UncmUg
aGF2aW5nIGEgYmFkIHRpbWUsIG9yIGJlY2F1c2UKQEAgLTgzNiw4ICs4MzYsOCBAQCBjbGFzcyBK
U09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgZGVmaW5lT3duTm9uSW5kZXhQcm9w
ZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4
aW5nU2hhcGU+Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0
dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKLSAg
ICB2b2lkIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdywg
QXJyYXlTdG9yYWdlKik7CisgICAgYm9vbCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0
aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
KTsKKyAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdywgQXJyYXlTdG9yYWdlKik7CiAKICAgICBib29sIGluY3JlYXNlVmVjdG9yTGVuZ3RoKFZN
JiwgdW5zaWduZWQgbmV3TGVuZ3RoKTsKICAgICB2b2lkIGRlYWxsb2NhdGVTcGFyc2VJbmRleE1h
cCgpOwpAQCAtODQ2LDcgKzg0Niw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIAogICAgIHZvaWQgbm90aWZ5UHJlc2VuY2VPZkluZGV4ZWRBY2Nlc3NvcnMoVk0m
KTsKICAgICAgICAgCi0gICAgYm9vbCBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
KyAgICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiwg
dW5zaWduZWQgaW5kZXgsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3Vs
dCk7CiAgICAgICAgIAogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Ugd2FudCBzZXRJbmRleFF1aWNr
bHkgdG8gc3VjY2VlZCBhbmQgeW91J3JlIHN1cmUgdGhhdAogICAgIC8vIHRoZSBhcnJheSBpcyBj
b250aWd1b3VzLgpAQCAtODkxLDcgKzg5MSw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpT
Q2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBjYW5QZXJm
b3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiwgUHJvcGVydHlOYW1lKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB2b2lkIHB1dElubGluZVNsb3coRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgYm9vbCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBib29s
IGdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgYm9vbCBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYsIFN0cnVj
dHVyZSYsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC05MDAsOSArOTAwLDkgQEAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBmaW5kUHJvcGVydHlIYXNoRW50cnkoUHJvcGVydHlOYW1l
KSBjb25zdDsKICAgICAgICAgCi0gICAgdm9pZCBwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3Rh
dGUqLCBTcGFyc2VBcnJheUVudHJ5KiwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBvbGQpOworICAgIGJvb2wgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0
YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYgb2xkKTsKICAgICAgICAgCi0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgYm9vbCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJh
eVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUsIEFycmF5U3RvcmFnZSopOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUpOwogICAgICAgICAKQEAgLTE0MjMsMTkgKzE0MjMs
MTkgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJu
YWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwogfQogCi1p
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIEFTU0VS
VCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodGhpcyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJu
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkpOwogICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwogfQog
CiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAppbmRleCBkYjE3MGYyOThjYjI1NTljN2UzN2ExMmVlMTEwMmMwMDkwYzUwOGEwLi45ZDUz
MzQxYTE0ODJjMmU5NjZjMzI0MGMxYjMwMmRlZTI4MGU2MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNTMsNyArNTMsNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBQcgogfQogCiAvLyBFQ01BIDguNi4yLjIKLUFMV0FZU19JTkxJ
TkUgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKQEAgLTYy
LDE4ICs2MiwxOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIAogICAgIC8vIFRyeSBp
bmRleGVkIHB1dCBmaXJzdC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY29ycmVjdG5lc3MsIHNpbmNl
IGxvYWRzIG9uIHByb3BlcnR5IG5hbWVzIHRoYXQgYXBwZWFyIGxpa2UKICAgICAvLyB2YWxpZCBp
bmRpY2VzIHdpbGwgbmV2ZXIgbG9vayBpbiB0aGUgbmFtZWQgcHJvcGVydHkgc3RvcmFnZS4KLSAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7Ci0gICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5j
YW5QZXJmb3JtRmFzdFB1dElubGluZShleGVjLCB2bSwgcHJvcGVydHlOYW1lKSkgewogICAgICAg
ICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50
ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCkKLSAgICAgICAgICAgICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0g
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRoaXNPYmpl
Y3QtPnB1dElubGluZVNsb3coZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
ICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXggOTM3YzA4ODc0NWY4YmI3Y2ZmYmRmN2FlMTkz
YzUyYmU1Y2Y3YjdjZi4uNjA4MzUyOTM1MDllZTBkZTA3MTY4YWJlN2Y3YTJlYWM2NDFlYThlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKQEAgLTc4LDE2ICs3
OCwxNiBAQCBib29sIEpTUHJveHk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZwogICAgIHJldHVybiB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LXZvaWQgSlNQcm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTUHJveHk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwot
ICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRo
aXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi12b2lkIEpTUHJveHk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK2Jvb2wgSlNQcm94eTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwp
OwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApp
bmRleCAyYmRjZDFiNzJhYmNlYmE4N2ZmYjA2ZTc0ZmUxNmI2MzI3M2Q4MTI0Li41NzA5MjFiZTE4
YzgxNjdmOWM3ZmQ1NjY2YWZiODBiOWJiYWVmZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5oCkBAIC03Niw4ICs3Niw4IEBAIGNsYXNzIEpTUHJveHkgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IDM2OGNl
ZGNiODBiM2E3NGJiNWFjMjM2Zjc2YWJhYjgxZTI5NTkwYmYuLmQ0NGNkZTAzNjRjOTdkOGRmNWRi
Y2Q5MmMzODhkZDFhNGY1N2M4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTE0OSw3ICsxNDksNyBAQCBlbnVtIGNs
YXNzIFN5bWJvbFRhYmxlUHV0TW9kZSB7CiB0ZW1wbGF0ZTxTeW1ib2xUYWJsZVB1dE1vZGUgc3lt
Ym9sVGFibGVQdXRNb2RlLCB0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLAotICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBXYXRjaHBvaW50U2V0KiYgc2V0KQorICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBX
YXRjaHBvaW50U2V0KiYgc2V0LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFIZWFw
OjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkp
OwogCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
ICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpICYmICFpZ25vcmVSZWFkT25seUVycm9ycykg
ewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93UmVhZE9ubHlFcnJvcikKICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xODgsMTcgKzE4OSwxOCBAQCBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZVB1dCgKICAgICAvLyB0aGUgcmlnaHQgZm9yIGJhcnJpZXJzIHRvIGJlIGFibGUg
dG8gdHJpZ2dlciBHQy4gQW5kIEkgZG9uJ3Qgd2FudCB0byBob2xkIFZNCiAgICAgLy8gbG9ja3Mg
d2hpbGUgR0MnaW5nLgogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKKyAgICBwdXRS
ZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBT
eW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQor
ICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJy
b3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0
cjsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJv
bFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5
bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlm
IChzZXQpCiAgICAgICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaChzZXQsIG9iamVj
dCwgcHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjA3LDExICsyMDksMTEg
QEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsCi0gICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMpCisgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wg
aWdub3JlUmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBXYXRjaHBvaW50
U2V0KiBzZXQgPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgIGJv
b2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRob3V0QXR0
cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBz
aG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAg
IGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRob3V0
QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1
dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAgICAgICAgc2V0LT5pbnZhbGlkYXRlKFZhcmlhYmxl
V3JpdGVGaXJlRGV0YWlsKG9iamVjdCwgcHJvcGVydHlOYW1lKSk7IC8vIERvbid0IG1lc3MgYXJv
dW5kIC0gaWYgd2UgaGFkIGZvdW5kIHRoaXMgc3RhdGljYWxseSwgd2Ugd291bGQgaGF2ZSBpbnZh
bGlkYXRlZCBpdC4KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIwLDEyICsyMjIsMTIgQEAgaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCgKIHRlbXBsYXRl
PHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9sVGFibGVPYmpl
Y3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwKLSAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBXYXRj
aHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IHRydWU7Ci0gICAg
Ym9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhBdHRy
aWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNo
b3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAg
Ym9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhBdHRy
aWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNo
b3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVz
dWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91
Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggMGJmOWQyZTliNTBmZjIyMzQ2NDY2
NDYxZDg1OWJlODM4MjU5OGFhZi4uNjczMjM5NDVjNTkwMTZiNzMxNzY4NTZmMDNjYzU3NDAyY2Fh
MGFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI4NCwyNyAr
Mjg0LDQwIEBAIGlubGluZSBib29sIGdldFN0YXRpY1ZhbHVlU2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIFRoaXNJbXAqCiAvLyAnYmFzZScgbWVhbnMgdGhlIG9i
amVjdCBob2xkaW5nIHRoZSBwcm9wZXJ0eSAocG9zc2libHkgaW4gdGhlIHByb3RvdHlwZSBjaGFp
biBvZiB0aGUgb2JqZWN0IHB1dCB3YXMgY2FsbGVkIG9uKS4KIC8vICd0aGlzVmFsdWUnIGlzIHRo
ZSBvYmplY3QgdGhhdCBwdXQgaXMgYmVpbmcgYXBwbGllZCB0byAoaW4gdGhlIGNhc2Ugb2YgYSBw
cm94eSwgdGhlIHByb3h5IHRhcmdldCkuCiAvLyAnc2xvdC50aGlzVmFsdWUoKScgaXMgdGhlIG9i
amVjdCB0aGUgcHV0IHdhcyBvcmlnaW5hbGx5IHBlcmZvcm1lZCBvbiAoaW4gdGhlIGNhc2Ugb2Yg
YSBwcm94eSwgdGhlIHByb3h5IGl0c2VsZikuCi1pbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpT
T2JqZWN0KiB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIHB1dEVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgSlNP
YmplY3QqIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIFJlYWRPbmx5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1
dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0eS4KICAgICAgICAgICAgIGlmIChKU09iamVjdCog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpKQogICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKLSAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0gZWxzZSBpZiAoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIEFjY2Vzc29yKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3Ry
aWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFJlYWRPbmx5KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgeworICAgICAgICBib29s
IGlzQWNjZXNzb3IgPSBlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3I7CiAgICAg
ICAgIEpTVmFsdWUgdXBkYXRlVGhpc1ZhbHVlID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIEN1c3Rv
bUFjY2Vzc29yID8gc2xvdC50aGlzVmFsdWUoKSA6IEpTVmFsdWUoYmFzZSk7Ci0gICAgICAgIGVu
dHJ5LT5wcm9wZXJ0eVB1dHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh1cGRhdGVUaGlzVmFs
dWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBDdXN0b21BY2Nlc3NvcikKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsQ3VzdG9t
U2V0dGVyKGV4ZWMsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpLCBpc0FjY2Vzc29yLCB1cGRhdGVU
aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKGlzQWNjZXNzb3IpCiAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbUFjY2Vzc29yKGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShiYXNlLCBlbnRyeS0+
cHJvcGVydHlQdXR0ZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogLyoqCkBAIC0zMTIsMTQg
KzMyNSwxNCBAQCBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhh
c2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhcwogICogSXQgbG9va3MgdXAgYSBoYXNo
IGVudHJ5IGZvciB0aGUgcHJvcGVydHkgdG8gYmUgc2V0LiAgSWYgYW4gZW50cnkKICAqIGlzIGZv
dW5kIGl0IHNldHMgdGhlIHZhbHVlIGFuZCByZXR1cm5zIHRydWUsIGVsc2UgaXQgcmV0dXJucyBm
YWxzZS4KICAqLwotaW5saW5lIGJvb2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdmFsdWUsIGNvbnN0
IEhhc2hUYWJsZSYgdGFibGUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIGxv
b2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2Jq
ZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBjb25zdCBIYXNoVGFibGVW
YWx1ZSogZW50cnkgPSB0YWJsZS5lbnRyeShwcm9wZXJ0eU5hbWUpOwogCiAgICAgaWYgKCFlbnRy
eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcHV0RW50cnkoZXhlYywgZW50cnksIGJh
c2UsIGJhc2UsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHB1dFJlc3VsdCA9IHB1
dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNlLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCmluZGV4IDAxNmEyNjg2ZWFiZGMyNWI4Zjc1MjljNmRkYzY2MjZk
OTQ0N2YyOTYuLmUwYWFmNmE2OTYyZDMwMjZkZWRlYjI3ZjdhYzJmN2Q3ZTAwZWZkZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTM0NSwx
MiArMzQ1LDEyIEBAIGJvb2wgUHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uPgotdm9pZCBQcm94eU9iamVjdDo6cGVyZm9y
bVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBl
cmZvcm1EZWZhdWx0UHV0KQorYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vy
c2UoKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHZtLnByb3Bl
cnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5
TmFtZS51aWQoKSkpKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZv
cm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1
CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhh
bmRsZXJWYWx1ZS5pc051bGwoKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmpl
Y3QuIikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7
CkBAIC0zNjcsMTIgKzM2NywxMCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIENhbGxU
eXBlIGNhbGxUeXBlOwogICAgIEpTVmFsdWUgc2V0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9k
KGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0LCBBU0NJSUxp
dGVyYWwoIidzZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZS4iKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFy
Z2V0KCk7Ci0gICAgaWYgKHNldE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHBlcmZv
cm1EZWZhdWx0UHV0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHNldE1ldGhv
ZC5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRQdXQoKTsKIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHRhcmdldCk7CkBAIC0zODEsNjIgKzM3OSw2MSBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQog
ICAgIGFyZ3VtZW50cy5hcHBlbmQodGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHRyYXBSZXN1bHQg
PSBjYWxsKGV4ZWMsIHNldE1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1
bWVudHMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJl
c3VsdC50b0Jvb2xlYW4oZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXRyYXBSZXN1bHRB
c0Jvb2wpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2Ft
ZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7CiAgICAgICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIn
cyAnc2V0JyBvbiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBv
biAndGFyZ2V0JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1
ZSBhbHJlYWR5IG9uIHRoZSAndGFyZ2V0Jy4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRvci5zZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFu
ZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJvcGVy
dHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlLiIpKTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQcm94eU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvKSB7Ci0gICAgICAgIEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09
IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykKKyAgICAgICAgcmV0dXJuIEJhc2U6
OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIAogICAgIFByb3h5
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7CiAgICAgYXV0
byBwZXJmb3JtRGVmYXVsdFB1dCA9IFsmXSAoKSB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzT2JqZWN0LT50YXJnZXQoKSk7Ci0gICAgICAgIHRhcmdl
dC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFy
Z2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHRoaXNP
YmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3BlcnR5
TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3Jt
UHV0KGV4ZWMsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1E
ZWZhdWx0UHV0KTsKIH0KIAotdm9pZCBQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIFByb3h5T2JqZWN0OjpwdXRC
eUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSk7IAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwZXJm
b3JtRGVmYXVsdFB1dCA9IFsmXSAoKSB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlz
LT50YXJnZXQoKTsKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBzaG91bGRUaHJvdzsKICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBpc1N0cmljdE1vZGUpOyAvLyBX
ZSBtdXN0IHByZXNlcnZlIHRoZSAidGhpcyIgdGFyZ2V0IG9mIHRoZSBwdXRCeUluZGV4LgotICAg
ICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwgZXhlYywgaWRlbnQuaW1w
bCgpLCBwdXRWYWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxl
KHZtKS0+cHV0KHRhcmdldCwgZXhlYywgaWRlbnQuaW1wbCgpLCBwdXRWYWx1ZSwgc2xvdCk7CiAg
ICAgfTsKLSAgICBwZXJmb3JtUHV0KGV4ZWMsIHB1dFZhbHVlLCB0aGlzVmFsdWUsIGlkZW50Lmlt
cGwoKSwgcGVyZm9ybURlZmF1bHRQdXQpOworICAgIHJldHVybiBwZXJmb3JtUHV0KGV4ZWMsIHB1
dFZhbHVlLCB0aGlzVmFsdWUsIGlkZW50LmltcGwoKSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQog
Ci12b2lkIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmpl
Y3QqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXggYjY4Y2FjNDRiZWQ5MDg5NjhiNmRm
YjM0ZTM5MDAxMTNkYWQ0MWM0Mi4uNTU1OTc4Y2Y1YzgyMmU5NTVhNTc5MmZmMjQ4YWNiY2NkMjZj
NTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBA
IC02Miw5ICs2Miw5IEBAIGNsYXNzIFByb3h5T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIEpTT2JqZWN0KiB0YXJnZXQoKSB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQog
ICAgIEpTVmFsdWUgaGFuZGxlcigpIHsgcmV0dXJuIG1faGFuZGxlci5nZXQoKTsgfQogCi0gICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwotICAgIHZvaWQgcHV0QnlJbmRleENvbW1vbihFeGVjU3RhdGUqLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRCeUluZGV4Q29tbW9uKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
cHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgogICAgIFByb3h5T2JqZWN0
KFZNJiwgU3RydWN0dXJlKik7CkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFByb3h5T2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBEZWZhdWx0
RGVsZXRlRnVuY3Rpb24+CiAgICAgYm9vbCBwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
UGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbj4KLSAgICB2b2lkIHBlcmZvcm1QdXQoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVy
Zm9ybURlZmF1bHRQdXRGdW5jdGlvbik7CisgICAgYm9vbCBwZXJmb3JtUHV0KEV4ZWNTdGF0ZSos
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIFBlcmZv
cm1EZWZhdWx0UHV0RnVuY3Rpb24pOwogICAgIGJvb2wgcGVyZm9ybVByZXZlbnRFeHRlbnNpb25z
KEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgcGVyZm9ybUlzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsK
ICAgICBib29sIHBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAppbmRleCA5MGM1
N2JlOTBmOGExYTRkYmQ2ZTQzMzUwYjViYzY3ZmUzNjQxYWNjLi4xM2FkMmQzN2FlOGExMGRlYTlm
Yzc5YWY0ZjkzMWM0ZDJlZDI1N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9QdXRQcm9wZXJ0eVNsb3QuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBQdXRQcm9wZXJ0
eVNsb3QgewogcHVibGljOgogICAgIGVudW0gVHlwZSB7IFVuY2FjaGFibGUsIEV4aXN0aW5nUHJv
cGVydHksIE5ld1Byb3BlcnR5LCBTZXR0ZXJQcm9wZXJ0eSwgQ3VzdG9tVmFsdWUsIEN1c3RvbUFj
Y2Vzc29yIH07CiAgICAgZW51bSBDb250ZXh0IHsgVW5rbm93bkNvbnRleHQsIFB1dEJ5SWQsIFB1
dEJ5SWRFdmFsIH07Ci0gICAgdHlwZWRlZiB2b2lkICgqUHV0VmFsdWVGdW5jKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7CisgICAg
dHlwZWRlZiBib29sICgqUHV0VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qo
SlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2UsIENvbnRleHQgY29u
dGV4dCA9IFVua25vd25Db250ZXh0LCBib29sIGlzSW5pdGlhbGl6YXRpb24gPSBmYWxzZSkKICAg
ICAgICAgOiBtX3R5cGUoVW5jYWNoYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggODk0YWFmYTQ2OTY4ZTYwMzJhZmQ5ZGQ4YmJk
NzViMjk4MTc5MDc5ZC4uYzZkNTdiMzE3MDk0OWVkYTRiMzk0Yzk2ZWY3NWU4YmU5Nzg0N2UzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RJc0V4dGVuc2libGUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5z
aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RTZXQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiAKIH0KQEAg
LTY5LDYgKzcwLDcgQEAKICAgICBpc0V4dGVuc2libGUgICAgICAgICAgICAgcmVmbGVjdE9iamVj
dElzRXh0ZW5zaWJsZSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgb3duS2V5
cyAgICAgICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RPd25LZXlzICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICAgIHByZXZlbnRFeHRlbnNpb25zICAgICAgICByZWZsZWN0
T2JqZWN0UHJldmVudEV4dGVuc2lvbnMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBz
ZXQgICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdE9iamVjdFNldCAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgc2V0UHJvdG90eXBlT2YgICAgICAgICAgIHJl
ZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgog
QGVuZAogKi8KQEAgLTIzNCw2ICsyMzYsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCisvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0IikpKTsKKyAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3Qo
dGFyZ2V0KTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHJl
Y2VpdmVyID0gdGFyZ2V0OworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNCkKKyAg
ICAgICAgcmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVudCgzKTsKKworICAgIC8vIERvIG5vdCByYWlz
ZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFwcGVuIGluIHN0cmljdCBtb2RlLgorICAgIGJv
b2wgaXNTdHJpY3RNb2RlID0gZmFsc2U7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2
ZXIsIGlzU3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRhcmdldE9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudCgyKSwgc2xvdCkpKTsKK30KKwogLy8g
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXRwcm90b3R5cGVv
ZgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBl
T2YoRXhlY1N0YXRlKiBleGVjKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGIwYWE1ZjY0YTEwNWU5ZWNiOTE2MjU1
MzkyMDU0NTlmMGY0YTFhNDguLmVlYmZkNTAyYzExOTgwNjk2MjY3NDE5OWE5OWQ4OTk1ZjMzYzM0
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQ3LDggKzQ3LDggQEAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvckRvbGxhcjgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI5KEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi1zdGF0aWMgdm9pZCBz
ZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7Ci1zdGF0aWMgdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOworc3RhdGljIGJvb2wg
c2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOworc3RhdGljIGJvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKQEAgLTIzNCwxNiArMjM0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yUmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1JlZ0V4cENvbnN0cnVjdG9yKEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2V0UmlnaHRDb250ZXh0KGV4ZWMpKTsKIH0KIAotdm9pZCBz
ZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgc2V0UmVnRXhwQ29uc3RydWN0
b3JJbnB1dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8gY29uc3RydWN0b3IgPSBqc0R5bmFtaWND
YXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQorICAg
IGlmIChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkgewogICAgICAgICBjb25zdHJ1Y3Rvci0+c2V0
SW5wdXQoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhleGVjKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgc2V0
UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorYm9vbCBzZXRSZWdFeHBDb25zdHJ1
Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8gY29uc3RydWN0b3IgPSBqc0R5
bmFtaWNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
KQorICAgIGlmIChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1
Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkgewogICAgICAgICBjb25zdHJ1Y3Rv
ci0+c2V0TXVsdGlsaW5lKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5s
aW5lIFN0cnVjdHVyZSogZ2V0UmVnRXhwU3RydWN0dXJlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0ZmRhZWI0YTQ5YTlj
N2IxYjUxY2JmNTNkY2NkMDJlNGUwNWEyZDUwLi5jOTczOWFmNzM2Y2VjMDllNmU2NzAyYjZlZjAy
NWVmOWM3NWM5OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKQEAgLTEzNywyNiArMTM3LDI2IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlZ0V4
cE9iamVjdFNldExhc3RJbmRleFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgYm9vbCByZWdFeHBPYmpl
Y3RTZXRMYXN0SW5kZXhTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGFzUmVnRXhwT2JqZWN0KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSksIHRydWUpOworICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUp
LCB0cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3Ry
aWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKK3N0YXRpYyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFsc2UpOwor
ICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNl
dExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBmYWxzZSk7CiB9CiAKLXZv
aWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sYXN0SW5kZXgpIHsKLSAgICAgICAgYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRl
eChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJvb2wgcmVzdWx0
ID0gYXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSk7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUoYXNSZWdFeHBPYmpl
Y3QoY2VsbCksIHNsb3QuaXNTdHJpY3RNb2RlKCkKICAgICAgICAgICAgID8gcmVnRXhwT2JqZWN0
U2V0TGFzdEluZGV4U3RyaWN0CiAgICAgICAgICAgICA6IHJlZ0V4cE9iamVjdFNldExhc3RJbmRl
eE5vblN0cmljdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0gICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiB9CiAKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNTdGF0ZSogZXhlYywg
SlNTdHJpbmcqIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKaW5kZXggYTYyNmQyOTEyZWE4ZWE4ZjI1NDNmNTE3ODI2MGUyZjhmZDVlN2I1Ny4u
Yjk0MWVlOTBkNTA1NGE1MjkxMmM1N2ZmNTAzMDBiZGQ0NjhlNzAxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTQxLDIwICs0MSwyNiBAQCBj
bGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdm9pZCBz
ZXRSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHIpIHsgbV9yZWdFeHAuc2V0KHZtLCB0aGlzLCByKTsg
fQogICAgIFJlZ0V4cCogcmVnRXhwKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHAuZ2V0KCk7IH0K
IAotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGxhc3RJbmRl
eCkKKyAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5k
ZXgpCiAgICAgewogICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpz
TnVtYmVyKGxhc3RJbmRleCkpOwotICAgICAgICBpZiAoTElLRUxZKG1fbGFzdEluZGV4SXNXcml0
YWJsZSkpCisgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJc1dyaXRhYmxlKSkgewogICAg
ICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihsYXN0
SW5kZXgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgdm9pZCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJ
bmRleCwgYm9vbCBzaG91bGRUaHJvdykKKyAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgbGFzdEluZGV4LCBib29sIHNob3VsZFRocm93KQogICAgIHsKLSAgICAg
ICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQorICAgICAgICBpZiAoTElLRUxZ
KG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldChl
eGVjLT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwotICAgICAgICBlbHNlIGlmIChzaG91bGRUaHJv
dykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNo
b3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBKU1ZhbHVlIGdldExhc3RJbmRleCgpIGNvbnN0CiAgICAgewpAQCAtNjUsNyArNzEsNyBA
QCBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNW
YWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAppbmRleCA5YTVk
YTgzOTU3YzMyNGU4ZGFmNDAyNWRmNDE0OTUyZDg0YzA1NzM5Li5jOGUwMDNiZjg1OTgyNjFiOTM2
MGQ3Y2I2YjYxYjhiN2I3MmVhNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtODgsNyArODgsNyBAQCBTdHJ1
Y3R1cmUqIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU3BhcnNl
QXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXks
IHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIFNwYXJz
ZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEFT
U0VSVCh2YWx1ZSk7CiAgICAgCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCB2b2lkIFNwYXJzZUFycmF5
VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNp
Z25lZCBpLAogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgaWYgKHNo
b3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhpcywg
dmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gZW50cnkucHV0KGV4ZWMsIGFycmF5LCB0
aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6
OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlIG1v
ZGUpCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiAgICAgZGVzY3JpcHRvci5zZXREZXNj
cmlwdG9yKEJhc2U6OmdldCgpLCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9pZCBTcGFyc2VBcnJheUVu
dHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBTcGFy
c2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3Bh
cnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ewogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIAogICAgICAgICBzZXQoZXhlYy0+dm0oKSwgbWFwLCB2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgY2FsbFNl
dHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIGNhbGxTZXR0ZXIoZXhlYywg
dGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGUpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNw
YXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA3NTRiNTNkOWQ2MDFkZjJhY2Q3YmNhZjJlOTRh
ZWY2ZDMzN2RmYTIuLmY3MWRjOTk0ZTg5NGE3MjgzYTU3MmIzMzI2YzllODc2MWI5MjJkMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMg
V3JpdGVCYXJyaWVyPFVua25vd24+IHsKIAogICAgIHZvaWQgZ2V0KEpTT2JqZWN0KiwgUHJvcGVy
dHlTbG90JikgY29uc3Q7CiAgICAgdm9pZCBnZXQoUHJvcGVydHlEZXNjcmlwdG9yJikgY29uc3Q7
Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5
VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dChFeGVj
U3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTVmFsdWUgZ2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0
OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBT
cGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbWFwCi0gICAg
dm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEVudHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGly
ZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSk7CiAgICAgQWRkUmVzdWx0IGFkZChKU09iamVj
dCosIHVuc2lnbmVkKTsKICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1f
bWFwLmZpbmQoaSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCmluZGV4IDA5ODhkNmQwNjkwMjk4OTA0ZWQ1OTlhMWRlODhjN2YzZDA0NTRhM2Qu
LmMyODdlZjhlMGUyNmM2NTZlYWFkYzJmZWU3MzgwNGJhMDY0YzgwYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtNjAsMjUgKzYwLDI1
IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3Bl
cnR5TmFtZSksIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIFN0cmluZ09iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFN0cmlu
Z09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBp
ZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBKU09iamVjdDo6cHV0QnlJ
bmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93
RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2ZkZjFkYTA5Li40Zjg5Njk3
NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCArNDksOCBAQCBjbGFzcyBTdHJp
bmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTRkMjJmYTJkYjBlYWNkNzQ4ODhjZWVkMDI2ZjM2MTZh
NjcyMGUzZC4uYTRjM2VlY2RlODI2NTM3N2VmMzYwZDRmZTAwYTEyMzlmNTY2MDA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAKIC0gcGF0
aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcudGFyZ2V0X21ldGFfcHJv
cGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVmbGVjdF9SZWZs
ZWN0LnNldC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtT
eW1ib2wubWF0Y2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9SZWdFeHAu
cHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wucmVwbGFjZV0uanMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDU0YWNiN2I1ZWI2MmRhOTViODVhNTk4Nzc4NmUxMmIz
NjFlNWE4ZDMuLjQ2OWU0MTFiM2IwMmY1NTBjNjRmNzViYTcyNmI1MWUzYWUzYTRhYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAg
ICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1By
b3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5
SUQpCkBAIC0zNDEsNyArMzQxLDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKTsKLSAgICB3cmFw
cGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFu
dCwgZWMpOworICAgIHB1dFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggNDAzMzUwMmNhZTlmZWY1YmQwNmQ1OWQ1NzYwMjYx
ZTQxNWJiNTczMC4uNTgyYWM2ZWYzNWQwZDJlNGViZDk4MjIwZjVmNDY2YTE3NTVlYjAzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC02OTQsOSAr
Njk0LDEwIEBAIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsICJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIp
OwogfQogCi12b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK2Jv
b2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQogewogICAgIHRocm93
VHlwZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBh
dHRyaWJ1dGVOYW1lLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAi
LCBpbnRlcmZhY2VOYW1lKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1RoaXNUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGNjY2NlMzJjM2MwYzIxZmNkYjE3ZWY5ODBk
MjQ4OTAxODYyOTliOWQuLjExZjZjN2IwZjlhYzAxYmYxNjQyODY2MTExODU3ZDBhMjVmNmI2OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC04OCw3ICs4
OCw3IEBAIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzIHsKIHZvaWQgdGhyb3dBcnJheUVsZW1lbnRU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKIHZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBh
dHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci1XRUJDT1JFX0VY
UE9SVCB2b2lkIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VY
UE9SVCBib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKIFdFQkNPUkVf
RVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihK
U0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cAppbmRleCAyMjcxZmQ5YWI5YTdjYWQwZTNhM2I1OGM5YjkwZTM4N2YwODA5NzI5Li42MmI3ZTNm
Y2JjZmI5OGZhYjI3ZTk5NDhmZmMyNThkYWNhZmZlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC03Myw3ICs3Myw3
IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduCiAgICAgcmV0dXJuIGRlbGV0ZVByb3BlcnR5KGNl
bGwsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpKTsKIH0KIAotYm9vbCBKU0RP
TVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU0RPTVN0
cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQp
CiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC04NSw2ICs4NSw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlZCgpLnNldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgIHB1dFJlc3VsdCA9ICFlYzsKICAgICByZXR1cm4gIWVjOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAx
OWZjYTI1MDU5YjU2Njk4MWQ4ZDI4ZDQ3ZDU5MzY3ZDY0ZGJkZDcyLi45Y2U4ODM4NWVlYTdjZmNj
OTkzYjFiOWU3MGQxOTgwYzZjNjgxNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsOCBAQCB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChtX3dyYXBwZWQtPmRvY3Vt
ZW50KCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMt
PnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVk
LT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBib29sIHB1dFJlc3Vs
dCA9IGZhbHNlOworICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9p
bnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVudCwgdG9K
UyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHksIHB1dFJlc3VsdCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NV2luZG93
QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggODhlMmYxYThjMTI3Mjgw
MmM0NmFjYzY2NmYwN2Q0ZGM2ZTM5YmY3Mi4uMTZiYjBkMGE5YWQ0ZjJlYjUyM2IzNzRjNmU3OGQ3
Yjg2OWYyOTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtMzQyLDMyICszNDIsMzUgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IHUKICAgICByZXR1cm4ganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3ROYW1lZEl0ZW1HZXR0
ZXIodGhpc09iamVjdCwgKmZyYW1lLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4
KSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgpLmZy
YW1lKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZTsKICAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
ZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4u
Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0
aW9uKQotICAgICAgICAgICAgbG9va3VwUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhpc09iamVj
dCwgdmFsdWUsICpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnByaW50RXJyb3JNZXNzYWdlKGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubG9jYXRpb24pIHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0g
ZmFsc2U7CisgICAgICAgICAgICBpZiAobG9va3VwUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdGhp
c09iamVjdCwgdmFsdWUsICpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCwgcHV0UmVz
dWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRoaXNPYmplY3QtPnByaW50RXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCitib29sIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2Vs
bCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSB8fCAhQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndy
YXBwZWQoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CisgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
aW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
QXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA5ZGZiYjRkNTNlZmViYzdkMzMzZDkzNGMx
ODU1MTUwZTA2NjM5MTNlLi4yMjllNjgzOTk4ZTM5MmU1MTY3NDhlNjI1NDdmZWZmOTg0ZWI4N2Ew
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBs
ZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTEFwcGxldEVs
ZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYQogICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpT
SFRNTEFwcGxldEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7
CiB9CiAKLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdp
bkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7
CisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgdGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MQXBwbGV0
RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50
Q3VzdG9tLmNwcAppbmRleCBhMmU5MTgzMTBiMWVkYTQ5ZTE3YjVkMDgwYjhjNDQ5ZTExOGYwMWQy
Li45MTlmNjg2NjJhMTFiNTgyYWRhZWIwODJhZmM1MGJkNzI1YmE3ZmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5j
cHAKQEAgLTM4LDkgKzM4LDkgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW0KICAgICByZXR1cm4g
cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxFbWJlZEVsZW1lbnQs
IEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1M
RW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
SlNIVE1MRW1iZWRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwg
Ym9vbCYgcHV0UmVzdWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5F
bGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1
dFJlc3VsdCk7CiB9CiAKIENhbGxUeXBlIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDgz
Zjk4ZjdmN2NjM2QxMGI1MTMxMDZkNWM2MjljNTY0NmRjZjcxNmYuLjRhODY0N2Y4OWViYzcwMDcy
OWVjODMwY2E2ZGFjOWI5ZThlNzMxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5
IEBAIGJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MT2JqZWN0RWxlbWVudCwgQmFzZT4oZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50Ojpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MT2JqZWN0RWxl
bWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQog
CiBDYWxsVHlwZSBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggYjMzYWQ0ZjViMTFkZjM5OTdkNDUzMGVlYzcyMTU2YmZj
NTAxMzI4MC4uMDllYWYxNzU4ZWM2MTBjYWJlOTNhMjliNjZmMDU4NTM3MmFlNzcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTYw
LDggKzYwLDkgQEAgYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJv
b2wmIHB1dFJlc3VsdCkKIHsKKyAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICBGcmFtZSogZnJh
bWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTc1LDcgKzc2LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBjb25z
dCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BI
YXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFlbnRyeSkgewogICAgICAg
ICBpZiAoc2FtZURvbWFpbkFjY2VzcykKLSAgICAgICAgICAgIEpTT2JqZWN0OjpwdXQodGhpcywg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICBwdXRSZXN1bHQg
PSBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEzNyw4ICsxMzgsOSBAQCBKU1ZhbHVl
IEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB3cmFwcGVkKCkudG9TdHJpbmcoKSk7CiB9CiAK
LWJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9v
bCBKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1
dFJlc3VsdCkKIHsKKyAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICByZXR1cm4gKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKaW5kZXgg
N2VhNzNiMTExM2QwYWY3YzFjZTcxN2JiYmM4NGE4ODI2NzcwOTU2OS4uMjg2NTM3MmU5YWU3MWY0
YTVjYTUwNGVlMDg0OTU1YWI1ZWIxNGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCkBAIC0xMTksMTQgKzEx
OSwxNCBAQCBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBKU0hUTUxF
bGVtZW50KiBlbGVtZW50LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkK
IHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMs
IGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFzY3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzY3JpcHRPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IHB1dFJlc3VsdCA9IHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHNjcmlwdE9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmgKaW5kZXggZGRhM2QwYzlmNWY4MDVmMzE3MDc1MzhiZDViODg5NTg5YzlkZDI1
Ni4uNDExNjYxZTZmYWU1ZjM5NjI4Y2VmYTlhNWVmN2MxOGFjYjY1MjliNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgK
QEAgLTQxLDcgKzQxLDcgQEAKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQ
cm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosCiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blBy
b3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYsIEpTSFRNTEVsZW1lbnQqKTsKLSAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21Q
dXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hU
TUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHBsdWdpbkVsZW1l
bnRDdXN0b21QdXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1
bHQpOwogICAgIEpTQzo6Q2FsbFR5cGUgcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVs
ZW1lbnQqLCBKU0M6OkNhbGxEYXRhJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHlwZSwgY2xh
c3MgQmFzZT4gYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90JiBzbG90LCBUeXBlKiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggM2FhN2U5NDM4ZWNkMTU5YjViZjBjOWJm
NWEyZTM1ZWRmY2Q3MGI2MS4uOWY1MjU2MWI4NTgzMjA1ODBkY2I4M2YxYTdjNWYxYWY4MjNhOTZj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgQmFzZTo6Z2V0
T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KIAotYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jv
b2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJl
c3VsdCkKIHsKICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQgaWYgdGhlIG9iamVj
dCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1lLgogICAgIC8vIFNp
bmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1l
KCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjawpAQCAtMTE5LDEzICsxMTksMTQgQEAg
Ym9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAvLyBpZiB0cnVlLCB0ZWxscyB0aGUgY2Fs
bGVyIG5vdCB0byBleGVjdXRlIHRoZSBnZW5lcmljIHB1dCkuIEl0IGRvZXMgbm90IGluZGljYXRl
IHdoZXRoZXIKICAgICAgICAgLy8gcHV0RGVsZWdhdGUoKSBkaWQgc3VjY2Vzc2Z1bGx5IGNvbXBs
ZXRlIHRoZSBvcGVyYXRpb24gb3Igbm90ICh3aGljaCBpdCBkaWRuJ3QgaW4gdGhpcwogICAgICAg
ICAvLyBjYXNlIGR1ZSB0byB0aGUgZXhjZXB0aW9uKS4KKyAgICAgICAgcHV0UmVzdWx0ID0gZmFs
c2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
LQorICAgIHB1dFJlc3VsdCA9ICFlYzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBi
ZTFmOGU2ODNiYWM3YzE2NTdmOWJmYWQ1OGY3NTNmODkxOTA3NGM4Li4zNjE2MDc5OTYzZWI4MDlh
ZTE2MmRiMzI3YTU1YThhYzY4MjgwOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTA0MSw5ICsxMDQxLDkgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJG92ZXJyaWRlc1B1dCkg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVs
ZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRl
eChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0
UmVzdWx0KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21O
YW1lZFNldHRlciJ9OwogICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVudCkgewpAQCAtMTM0MSw3
ICsxMzQxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAg
IGlmICghSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIG15ICRzZXR0
ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIH0KQEAgLTE4ODksNyArMTg4OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFs
dWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0
ZSkpIHsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFt
ZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRp
ZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0xOTAwLDcgKzE5MDAs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAKICAgICAgICAgbXkg
JGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNv
bnN0cnVjdG9yIjsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y29uc3RydWN0
b3JGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKIAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuIik7CiAgICAgfQpAQCAtMjE0NCwxMiArMjE0NCwxMyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0
ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0
ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNP
YmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRS
ZXN1bHQpKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
cHV0UmVzdWx0O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpO1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTI1
MzksMTggKzI1NDAsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBt
eSAkY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgPSAic2V0SlMiIC4gJGludGVyZmFjZU5hbWUgLiAi
Q29uc3RydWN0b3IiOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NvbnN0
cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgImJvb2wgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NO
YW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKIAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQog
ICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tTmFtZWRTZXR0ZXIifQpAQCAtMjU1OCwyNiArMjU1OSwyNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogCiAgICAgaWYgKCRoYXNDdXN0b21TZXR0ZXIpIHsKICAgICAgICAg
aWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24i
fSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+
cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhp
c09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1
dFJlc3VsdCkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOwogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dylcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNz
TmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdylcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwpAQCAtMjU4
NSwxOCArMjU4NywxOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNl
dHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoc3RhdGUs
IGluZGV4LCB2YWx1ZSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21O
YW1lZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5k
ZXgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTtcbiIpOwotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0
RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBwdXRSZXN1bHQg
PSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QsIHB1dFJlc3VsdCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXRCeUlu
ZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4
KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjYyMCw3ICsyNjIzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwogCi0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtwdXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtwdXRGdW5jdGlv
bk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpIGlmICEk
YXR0cmlidXRlLT5pc1N0YXRpYzsKQEAgLTI2MzIsNyArMjYzNSw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHtcbiIpOwogICAgICAg
ICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJMZW5pZW50VGhpcyJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxz
aWYgKEludGVyZmFjZVJlcXVpcmVzQXR0cmlidXRlc09uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5
KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gdHJ5aW5n
IHRvIHNlYXJjaGluZyB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBjb21wYXRpYmlsaXR5IHJlYXNv
bnMuCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLmdldE9iamVjdCgp
O1xuIik7CkBAIC0yNjQ0LDggKzI2NDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFt
ZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwi
LCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB9XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTI2NTUsMTEgKzI2NTcsMTIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChI
YXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMp
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+
c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoKnN0YXRlLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAg
ICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50SGFuZGxlciIpIHsKICAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAg
ICBteSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1
dGUpOwpAQCAtMjY3NCw2ICsyNjc3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgIDogInNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzZXR0ZXIoKnN0YXRlLCAq
Y2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCAkZXZlbnROYW1lLCB2YWx1ZSk7XG4i
KTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgIG15
ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAg
ICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwpAQCAtMjY4NCwx
MCArMjY4OCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0p
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci5cbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0
ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNh
c3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gb2JqZWN0LlxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHN0YXRlLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRl
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBcIiRuYW1lXCIpLCB2YWx1ZSk7
XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmli
dXRlLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBteSAkcHV0Rm9yd2FyZHMgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQdXRGb3J3YXJkcyJ9
OwpAQCAtMjY5Nyw3ICsyNzAxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBS
ZWZQdHI8JHthdHRyaWJ1dGVUeXBlfT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKS4ke2ltcGxHZXR0ZXJGdW5jdGlvbk5hbWV9KCk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWZvcndhcmRlZEltcGwpXG4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSAqZm9yd2FyZGVkSW1w
bDtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEF0dHJpYnV0ZSBpcyBub3QgbnVsbGFibGUsIHRoZSBpbXBsZW1lbnRh
dGlvbiBpcyBleHBlY3RlZCB0byByZXR1cm4gYSByZWZlcmVuY2UuCkBAIC0yNzI3LDE0ICsyNzMx
LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghdmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZv
KCkpKSkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1l
XCIsIFwiJG5hbWVcIiwgXCIkYXJnVHlwZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0
dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkgLiAiIG5hdGl2ZVZhbHVlID0gIiAuIEpTVmFsdWVU
b05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKIAogICAgICAgICAgICAgICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbXkg
QGVudW1WYWx1ZXMgPSAkY29kZUdlbmVyYXRvci0+VmFsaWRFbnVtVmFsdWVzKCR0eXBlKTsKQEAg
LTI3NDMsMTMgKzI3NDcsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGVudW1DaGVja3MsICJuYXRpdmVWYWx1ZSAhPSBcIiRlbnVt
VmFsdWVcIiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1
c2ggKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIiAuIGpvaW4oIiAmJiAiLCBAZW51bUNoZWNrcykg
LiAiKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiZG91YmxlIiBvciAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgImZsb2F0IikgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobmF0aXZlVmFs
dWUpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgVHlwZUVycm9yKTtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAg
ICAgICAgICAgICAgICAgfQogCkBAIC0yNzU3LDcgKzI3NjEsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcGwu
aXNSZWFkT25seSgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yNzgxLDYgKzI3ODUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGltcGwuY29tbWl0Q2hhbmdlKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2Vu
ZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNU
eXBlZEFycmF5VHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpIGFuZCBub3QgJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJBcnJheUJ1ZmZlciIpIHsKQEAgLTI4MDUsNiArMjgx
MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGFyZ3VtZW50cywgImVjIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtmdW5jdGlvbk5hbWV9KCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7XG4iKSBpZiAk
c2V0dGVyUmFpc2VzRXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIApAQCAtNDY1Niw4ICs0NjYyLDggQEAgc3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFy
YXRpb24KIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiXG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyB2b2lkIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTtcbiIp
OwogICAgIH0KIAogICAgICMgQ3VzdG9tIGRlZmluZU93blByb3BlcnR5IGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDI4NGVmZjRlN2EyYmJmOWEwYjQ2MzQy
NWMyMjMxYWM4ZDhkNmI5MzguLmRiYjZkNGZhYmFlMDg2MzRkNzJkOWJhNWRlZWZmM2VhMWQ5YzMz
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC00Miw3ICs0Miw3IEBA
CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CkBAIC0xNzQsMTYgKzE3NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpT
VGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCAwMzIyODdkOGU5YzhmYzYzMDMxNDk0
ZmZjNTcwODY0MzFiMWFjNDUwLi5iNjlmZWUxMDQ3NzgwZDY2YTNiOWVkMjU3ODgxYWFmMzgwMGUx
Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIAogY2xhc3MgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzNCwxNiAr
MTM0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5j
cHAKaW5kZXggMDUxNzQ3MDJkZWNiZjZiMGZjZWE0OWQzMjhiYjExNDQ0YzdiZjUyYi4uNWJlZmMx
NzJhZjkzZWQ1NWU1NzA3OWM2YmRhYzRlMjhmMGRkOTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xMzEsMTYgKzEzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0b3IpOwogfQogCi12b2lk
IHNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogYm9vbCBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggZTM4Nzg4
YjllOWFhODI2M2VlYTFmNjMyNDFkNzg5MDc2NzFlODU1MC4uYjM1MTFhOTU0OTkzMjQxNzhmNjdi
NzRiZjA5MDFlNGI5MDk0ZGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwCkBAIC00MCw3ICs0MCw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90
eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjYsMTYg
KzE2NiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgp
LCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggZmE4OTBiM2Q1Mjg2NjUxZGJlNWExNmFmZGZkYTg1ZDJhNmNjMTM2Mi4uMjhmM2Mw
ZmY0YzQyZDE0NzA5ZjdhYTdlMDNiYzMxZjAxMWM4OTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcApAQCAtMzksNyArMzksNyBAQAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAK
IGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05v
bkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIwMSwxNiArMjAxLDE2IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDU3YWY1NjA4NmFmYzNkOWVmMjQ3NTQyZGVjOGZj
NDJkMTc1N2M4YjMuLjM5ZmZlMmJiOTg0NTU0ZGEwNGIxNWJiMGRkOTQ0ODMyZmQ5ZGZlY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtNDIsNyArNDIsNyBAQAogLy8gQXR0cmlidXRl
cwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY1LDE2ICsx
NjUsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKIH0KIAogdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CmluZGV4IGEwYzBmYjQ4ZjMyYjc4OTEwOWI3ZjY4OTdlOTRlZGYyMjZkNjQ2ZmYuLmE4Njc5YzIw
NzA1MTZhZTUxMzBmN2EyMDk2OWI3ZmU0ZDE1OWQ5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
TmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY0LDE2ICsxNjQsMTYg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBK
U1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCmluZGV4IDc1YzQxMGNjMmJjZWU1ZmE4YWE3NGUyMjc0MDgxZjlkYWEwZjdhM2Uu
LjNjNDg4YjM2MWZlMTJkNTY2MjJhMDhlOWM5MGJjZDk4NmJlNmYwM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIC8vIEF0dHJp
YnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xh
c3MgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTIzLDE2ICsxMjMsMTYgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRl
LT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAg
cmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBlNzk2ZWE0N2I5NmJkNjgx
OGYyZTUyMjVmMmExMjJkN2EzMGY1OGU5Li40MDhiZGEwOTQ1N2U3NzlkMmYzYjJmYmE2ZThjY2Uy
YWYyNzVlMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtODMsNDcgKzgzLDQ3IEBACiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNT
dGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudHNTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNT
dHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxl
bWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFj
ZVN1cHBsZW1lbnRhbFN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50YWxTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIz
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbE5vZGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CkBAIC01OTQsMTY0ICs1OTQsMTY4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKIH0KIAotdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
PnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAodGhpc09i
amVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJl
c3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQg
SlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0
ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3Rh
dGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTsKLSAgICBp
ZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwg
aW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsK
KyAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CisgICAgcmV0
dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVt
ZW50c1N0YXRpY0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBUZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1lbnRzU3RhdGljQXR0cihuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi12b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxl
bWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c1N0cjIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVl
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJbXBsZW1lbnRz
U3RyMihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi12b2lkIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1w
bGVtZW50c1N0cjMoKnN0YXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi12b2lk
IHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9k
ZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRJbXBsZW1lbnRzTm9kZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi12
b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVt
ZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGlj
QXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi12b2lkIHNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVl
LnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGws
IG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLXZvaWQgc2V0SlNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdElu
dGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNl
dFN1cHBsZW1lbnRhbFN0cjMoKnN0YXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxO
b2RlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIE5vZGUqIG5hdGl2
ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGlt
cGwsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmgKaW5kZXggZWE2Y2VjNjJkNWZmZTVmNGJjMDE4NjAxMTQzZmM1NDhkYTAwNTBkYy4u
MjRjOTA4ZjAzNDFiZTRmNTFkNDNkNTJlMTEyZGJlY2IzNDJlM2U1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RJbnRlcmZh
Y2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbnRlcmZhY2U+IHsKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlKiB0b1dyYXBwZWQo
SlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOwotICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBw
dXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA4NTYyOWUyOTdlMTMxNGE5
Yjg5MzFjNzM4NzY4MzMyNzVhYmNjYzI0Li5jZDc2ODczZDgzMmQyZWM2YTQxMjEyZWU4YWI2ZGNi
NDI5YzgwMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAK
QEAgLTQwLDkgKzQwLDkgQEAKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKQEAgLTE2NiwyOCArMTY2LDI4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotdm9pZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgp
LCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJu
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZVJXQ3VzdG9tIik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iKTsKICAgICB9CiAg
ICAgY2FzdGVkVGhpcy0+c2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKCpzdGF0ZSwgdmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAppbmRleCA5YTQ5NzFhODRhYTM0ZThhNjU0MDFlZGZlNjYzMDMzMTUyN2Uw
ZjJiLi4zNGRlNjhjMmEzMDJhMDFlYzU5Njc2N2Q1NmI5Zjk0NWMxZmFhNjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBA
CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzMSwxNiAr
MTMxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWNmYjNkODQ5ODgyN2UxNWUz
YWVlMTcxZmJlZDg0NWZmNzUzNDhkLi40ZGU2NmNmYjllYjA5YjFmYTY4OTlhYzk5NGUyZTg5OGQw
NDNiYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAKIGNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAppbmRleCBkOGQ2MGY2YTljYzNiZjA5Yzg4MmYxNjY3YmU0ZjI4YWM5NTBmMzc4
Li42NDJiZGVjNmJlZjYwODVhNjM5Zjk0YmU4MDkyNmJiMjgzN2MxYjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CkBAIC0zNiw5ICszNiw5IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9kZU5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vZGVOYW1lKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE5vZGVOYW1lKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE5vZGVDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3ROb2RlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNO
b25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNDQsMzIgKzE0NCwzMiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAotdm9pZCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vZGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5vZGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0Tm9kZSIsICJuYW1lIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFs
dWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMjU0YmM2
NTgyYTlhY2JhNzM5ODA0OTZhYjUwYmExZjg4N2M0ODQzMi4uOTc3MjNhYTg1MmJjMWQ5MzZhYTc0
Y2RmMjk2MDJiYmJlMzk1OWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cApAQCAtNDgsMTUgKzQ4LDE1IEBACiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3Jp
dGVhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNl
cHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y0dldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJF
eGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1p
bmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIAogY2xhc3MgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMzMxLDg1ICszMzEsODUgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5v
bmRldGVybWluaXN0aWM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgp
LCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJu
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVy
bWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0
aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE5vbmRldGVybWluaXN0aWNXcml0ZWFi
bGVBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2Vw
dGlvbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y0V4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dl
dHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
U3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY0dl
dHRlckV4Y2VwdGlvbkF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNl
cHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0
YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dE5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKG5hdGl2ZVZhbHVlLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAppbmRleCA1ZDQzOTk2ODFhYzNiZTY4OGIxNzBlYWQ5YzZlNGFiNTAwMjViZGI0Li45
NjUyMDBmZTMxZTJkYTBkYThhMTUzNDg3MTY2MjA3NjBiODk0NGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
MjAwLDE1OSArMjAwLDE1OSBAQAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eVRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0
YXRpY1JlYWRPbmx5TG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yU3RhdGljU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0
aWNTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJP
YmooSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqRW51bUF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
VW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpM
b25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5z
aWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9i
akF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuZm9yZ2VhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialhNTE9i
akF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9u
bHlTeW1ib2xBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0
YXRpY1JlYWRPbmx5U3ltYm9sQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVn
cmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9i
alJlZmxlY3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZFVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uV2l0aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqT25mb28oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iak9uZm9vKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iak9uZm9vKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI2Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
YWNoZWRBdHRyaWJ1dGUxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRy
aWJ1dGUyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
ak11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
akltbXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
alN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0
RmxvYXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqRGVzY3JpcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpJZChKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0T2JqUHJv
dG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0yMDQ0
LDExMDAgKzIwNDQsMTA5NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVl
KTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RP
YmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFRlc3RPYmo6OnNldFN0YXRpY1N0cmluZ0F0dHIo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2Fz
dGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0
YXRlLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOworICAgIHJldHVybiBj
YXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
c3RhdGUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2Jq
RW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0
ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUu
dG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChuYXRpdmVWYWx1ZSAhPSAiIiAmJiBuYXRpdmVWYWx1ZSAhPSAiRW51bVZhbHVlMSIg
JiYgbmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTIiICYmIG5hdGl2ZVZhbHVlICE9ICJFbnVtVmFs
dWUzIikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRFbnVtQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQnl0
ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50OF90IG5hdGl2ZVZhbHVlID0gdG9JbnQ4KHN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0Qnl0ZUF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvY3RldEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50OF90IG5hdGl2ZVZh
bHVlID0gdG9VSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE9jdGV0QXR0cihuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGludDE2X3QgbmF0aXZlVmFsdWUgPSB0b0ludDE2KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U2hvcnRBdHRyKG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialVu
c2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25l
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2ln
bmVkU2hvcnRBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1aW50MTZf
dCBuYXRpdmVWYWx1ZSA9IHRvVUludDE2KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRTaG9ydEF0dHIo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJsb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRM
b25nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakxv
bmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdM
b25nQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGxvbmcgbG9uZyBuYXRpdmVW
YWx1ZSA9IHRvSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRMb25nTG9uZ0F0dHIobmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25n
TG9uZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRM
b25nTG9uZ0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VGVzdE9iakF0dHIobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RP
YmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
alhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJYTUxP
YmpBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpbXBsLnNldFhNTE9iakF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
cmVhdGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUu
dG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRD
cmVhdGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRT
dHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmlu
Z2F0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlZmxlY3RlZEludGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGludGVn
cmFsYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdy
YWxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1
bnNpZ25lZCBuYXRpdmVWYWx1ZSA9IHRvVUludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRJbnRl
Z3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdy
YWxhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEJvb2xlYW5BdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIsIG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxB
dHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0
dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciwgbmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50SW50ZWdyYWxBdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGJvb2wg
bmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
dXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0
ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZl
VmFsdWUgPSB0b0Zsb2F0MzJBcnJheSh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0VHlwZWRBcnJheUF0dHIobmF0aXZlVmFsdWUuZ2V0KCkpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBu
YXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlv
biIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RP
YmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7CiAgICAgaW50IG5hdGl2ZVZhbHVl
ID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UobmF0aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0
cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5n
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24obmF0aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaWN0VHlw
ZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0
VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpICYmICF2YWx1ZS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpKSB7CiAgICAgICAgIHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRT
dHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CiAg
ICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEN1c3RvbUF0dHIoKnN0YXRlLCB2YWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJvbmZvbyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9vIik7CiAgICAgfQogICAg
IHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlz
LT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlKCpzdGF0ZSwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRo
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENh
bGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRo
Q2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50
MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSgq
c3RhdGUsIGFjdGl2ZURPTVdpbmRvdyhzdGF0ZSksIGZpcnN0RE9NV2luZG93KHN0YXRlKSwgbmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAg
IHJldHVybjsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
KHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKCpzdGF0ZSwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRl
c3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNj
cmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0
b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBzY3JpcHRDb250ZXh0LCBuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0
byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFz
Y3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgc2NyaXB0
Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQotdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMShuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpICYmIEVOQUJMRShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMihuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0Q29uZGl0aW9uYWxBdHRyMyhuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi12b2lkIHNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsQXR0cjQiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAgcmV0
dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLXZvaWQgc2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsK
KyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjYiKSwg
dmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsK
IH0KIAogI2VuZGlmCiAKLXZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlB
dHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZt
KCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QW55QXR0
cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJs
ZVBvaW50Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2Zm
PFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE11dGFibGVQb2ludChuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFi
bGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltbXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmF3YmVycnko
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyYXdiZXJyeSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCbHVl
YmVycnkobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmlj
dEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0Rmxv
YXQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
U3RyaWN0RmxvYXQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iaklkKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJZChuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNl
YWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC4KLSAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUs
ICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJl
cGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUobmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVs
bGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwg
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVu
dW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRl
V2l0aFJlc2VydmVkRW51bVR5cGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVz
ZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobmF0aXZlVmFs
dWUgIT0gIiIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFsdWUxIiAmJiBuYXRpdmVWYWx1
ZSAhPSAiT3B0aW9uYWxWYWx1ZTIiICYmIG5hdGl2ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMyIp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBSZWY8VGVz
dE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNB
dHRyaWJ1dGUoKTsKICAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVs
bGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialB1dEZvcndh
cmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0
Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBSZWZQdHI8VGVzdE5vZGU+
IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJs
ZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsOwog
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE5hbWUobmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAxMDMyZmU4ODNlMTA4ZGU0MmM0ZDI0OWU3NjAyZGYw
ODA4MWE3ODBmLi40MzNmZmQ3ZTM4ZmYyODAzY2NlOGE1ZmMzOWE1NzZkZjkyZjMwOWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIw
MywxNiArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCA0NGFiNDQ5YjgyZThj
ZjJjZDZiMGQzZDRlNTc1YjlhNmNiNmVjMWY0Li4zNjUxZWMwZThjOTYwZjkxMjBkMmRlNjAwNDll
ZjQ4NjY5OGQwY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00
Miw3ICs0Miw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0o
KSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVy
biBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCA5MTNmZmRjMjFiNTQyMzUzNDA0ZTZmZGY3OTM3MDJmMmU2NjY0ZWQyLi5kMmFm
NDQ5NjQwZWYxOGY3NjhkOGRmZWFlNTQ0Y2MyODE1YzkxNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNDAsMTQg
KzQwLDE0IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQb3J0cyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNs
YXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjIzLDQ5ICsyMjMsNDkgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZh
bHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0VmFsdWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVk
VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRDYWNoZWRWYWx1ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggYTcxN2M3MDU3Y2EwMDU5ODA3ZTlmMTYwYzczNWRmNzE3
YmM2YWY0Mi4uNWU0NGNiZDUxYmE0YmY2YTlkMmNkMTZlYjUxYzkzNWJhZDVhNGRjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCkBAIC02MCwyMCArNjAsMjAgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBl
ZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVk
ZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0zMzIsMTIxICszMzIsMTIxIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExv
bmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUlu
dDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0dHIobmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlw
ZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CmluZGV4IDM0MWIxMGE3NGRjYzFlZjg3ZTE4ZTc4NTA2OWY1ZDI4NjEyOTdlNTIuLjNiZjJhMmQ1
MWZmYzJlODJiNjIzZmI2NGRjMjgyOThhZTgzZjQyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTYXR0
cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
CiBjbGFzcyBKU2F0dHJpYnV0ZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTQyLDE2ICsxNDIsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRy
aWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTYXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNl
dEpTYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTYXR0cmli
dXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTYXR0cmlidXRlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKIH0KIAogSlNWYWx1ZSBKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBj
b25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IGM1ZDAw
M2M0NThjZGY0M2JkZjNhYTM5ZTQ2ZDA4M2VmMjVlYzJlODUuLjk2ZTRjYzc4N2U2MzliNmU2NDNl
YWFkNzZmY2ZlOWFjNTgxNTMxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIC8v
IEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU3JlYWRvbmx5Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNyZWFkb25seVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTIzLDE2ICsxMjMsMTYgQEAgRW5jb2RlZEpT
VmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTcmVhZG9ubHk6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLXZvaWQgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTcmVhZG9ubHlQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfcnVudGltZS5jcHAKaW5kZXggYjIzMmIwNjVlOTQyNmE0NjcwODE2ZDVmYjA5YWEwZTY3
NjhhNTdkYy4uM2VmYTcxNDIxOTFlMjY5NDRjMThjNTM1NWEwY2IxM2U5MWFmNmExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUg
Q0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNl
KiBpbnN0KSBjb25zdAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi12b2lkIENGaWVs
ZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3QsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5j
ZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkg
Y29uc3QKIHsKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ0luc3RhbmNlKj4oaW5zdCk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3RhbmNlLT5nZXRP
YmplY3QoKTsKQEAgLTY5LDE0ICs2OSwxNyBAQCB2b2lkIENGaWVsZDo6c2V0VmFsdWVUb0luc3Rh
bmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3QsIEpTVmFsdWUgYQogICAg
ICAgICBOUFZhcmlhbnQgdmFyaWFudDsKICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQo
ZXhlYywgYVZhbHVlLCAmdmFyaWFudCk7CiAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
ICAgICAgICAgewogICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGV4ZWMpOwotICAgICAgICAgICAgb2JqLT5fY2xhc3MtPnNldFByb3BlcnR5KG9iaiwgX2ZpZWxk
SWRlbnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5fY2xhc3Mt
PnNldFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRlbnRpZmllciwgJnZhcmlhbnQpOwogICAgICAgICAg
ICAgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAg
ICAgIH0KIAogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJnZhcmlhbnQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAppbmRleCAxMDY3MmVkOTgxYmY5YjY4NDhmNTZk
MzMzMzQ3MmNlYmM3ZWFkODk3Li4yMTlmZWZlZTQzMWZkNGJlNzMxMjY5NmU5OTQwNWFkODg2ZTRk
YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBDRmllbGQgOiBwdWJsaWMgRmllbGQgewogICAgIENGaWVsZChOUElkZW50aWZpZXIgaWRl
bnQpIDogX2ZpZWxkSWRlbnRpZmllcihpZGVudCkgeyB9CiAKICAgICBKU1ZhbHVlIHZhbHVlRnJv
bUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBK
U1ZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVj
U3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
TlBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBfZmllbGRJZGVudGlmaWVy
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IDAwMjk0ZmFkZDA1
OGFkOGQwM2RmN2FiMGNjNTI0ZGZiNWRmMjI2YjIuLjVmZTg1ZjVmNGMxM2RiOGYxYjdiZmM1ZjA3
NWMwYjlhNWRjOWRlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAt
NTIsNyArNTIsNyBAQAogY2xhc3MgRmllbGQgewogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1
ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1
ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIH5GaWVsZCgpIHsgfQogfTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbmNlPiB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9
CisgICAgdmlydHVhbCBib29sIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0KQEAgLTEyNCw3ICsxMjQs
NyBAQCBjbGFzcyBBcnJheSB7CiAgICAgZXhwbGljaXQgQXJyYXkoUmVmUHRyPFJvb3RPYmplY3Q+
JiYpOwogICAgIHZpcnR1YWwgfkFycmF5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVl
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5n
dGgoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
LmgKaW5kZXggNzY4OTY2YjQ4OThhMTRiN2MzZTcwZTlmOTA1NGNlYTE4ZDlmNjYwZi4uYjU4ZDFi
NjI5ZjQ4MTA0MTU3YTYyODkxYjIyZTllMDUwMmZhYWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgT2JqY0ZpZWxk
IDogcHVibGljIEZpZWxkIHsKICAgICBPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSk7CiAgICAg
CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1Zh
bHVlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJdmFyU3RydWN0UHRyIF9pdmFyOwpAQCAtNzgs
OCArNzgsOCBAQCBjbGFzcyBPYmpjQXJyYXkgOiBwdWJsaWMgQXJyYXkgewogcHVibGljOgogICAg
IE9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW50IGlu
ZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQo
RXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBh
VmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIGludCBpbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVu
Z3RoKCkgY29uc3Q7CiAgICAgCiAgICAgT2JqZWN0U3RydWN0UHRyIGdldE9iamNBcnJheSgpIGNv
bnN0IHsgcmV0dXJuIF9hcnJheS5nZXQoKTsgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIE9i
amNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0lu
c3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IGE2YzkwMjM4NjA5MGRlYjA5MDUxMjY0ZWVkZDk4ODlhODFlNzhl
MGEuLjU5MGYyMjUzYTkxNDJiMmNlN2UzZGMxZjgwODY5MzYxYmY3YTBhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gW3dlYlNjcmlwdE9iamVjdENsYXNzKCkgX2NvbnZlcnRWYWx1
ZVRvT2JqY1ZhbHVlOnZhbHVlIG9yaWdpblJvb3RPYmplY3Q6cm9vdE9iamVjdC5nZXQoKSByb290
T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCldOwogfQogCi12b2lkIE9iamNGaWVsZDo6c2V0VmFsdWVU
b0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1Zh
bHVlIGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBj
b25zdAogewogICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxjb25zdCBPYmpjSW5z
dGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsKICAgICBpZCB2YWx1ZSA9IGNvbnZlcnRW
YWx1ZVRvT2JqY09iamVjdChleGVjLCBhVmFsdWUpOwpAQCAtMTM4LDkgKzEzOCwxMSBAQCB2b2lk
IE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5z
dGFuY2UqIGluc3RhbmNlLCBKUwogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CiAgICAgICAgICAgICBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0
ZShleGVjKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChO
U0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0p
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0xNTIsMTYgKzE1NCwxNiBA
QCBPYmpjQXJyYXk6Ok9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIgYSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKIHsKIH0KIAotdm9pZCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAor
Ym9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQg
aW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewogICAgIGlmICghW19hcnJheS5nZXQoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7CiAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291
bnRdKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIC8vIEFsd2F5cyB0
cnkgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYW4gT2JqQyBvYmplY3QsIHNvIGl0IGNhbiBiZSBw
bGFjZWQgaW4gdGhlCkBAIC0xNzAsOCArMTcyLDEwIEBAIHZvaWQgT2JqY0FycmF5OjpzZXRWYWx1
ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkK
IAogICAgIEB0cnkgewogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNl
cHRpb24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0yMjEsOCAr
MjI1LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIE9iamNGYWxsYmFja09i
amVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKIHsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGVmOTky
NDgyNzg2ZjcyNWQ3MGVlMWVkYzNlMDcwY2Y2YjdmOGNjNWUuLmM1YjNjNGY3ZTdhMjE3OTI3MTIx
YjNjN2U3YzBmMWE0OTY3MWI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKQEAgLTExMSwzMSArMTExLDI5IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgaW5kZXgsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVy
cm9yIikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewotICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZh
bHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNl
dFZhbHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgIAotICAgIEpTT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkK
K2Jvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKIHsKICAgICBSdW50aW1l
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYg
KGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3Ii
KSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
LSAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5k
ZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5z
ZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKIGJvb2wgUnVudGltZUFycmF5Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA1OGJhMDU5NmU2NDkxYTg0NDYyYmRjNmVl
ZDg2NGM1OWEyNTkyZWMxLi4wMThjMTMyNzhkYmEzZGQwMzE3MWU1M2VmYzBhZDdkZjBlMTA3ZTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTU2LDggKzU2LDggQEAg
Y2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGY3Zjk4YmY4YzBmNTE1ZTJhOThlYzZm
OWU3MDE2Mzk4NGU2NzY2NDUuLmE1NzNlMDVkNzU5YjA3NTcwZDI2MjFkOGU2MjYwMzY0MWNiYjRl
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMTYxLDI1
ICsxNjEsMjcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXIKICAgICByZXR1cm4gaW5zdGFuY2Ut
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5z
dGFuY2UpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKICAgICBpbnN0YW5j
ZS0+YmVnaW4oKTsKIAogICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgorICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgRmllbGQgKmFGaWVsZCA9IGluc3RhbmNlLT5nZXRD
bGFzcygpLT5maWVsZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOwogICAgIGlm
IChhRmllbGQpCi0gICAgICAgIGFGaWVsZC0+c2V0VmFsdWVUb0luc3RhbmNlKGV4ZWMsIGluc3Rh
bmNlLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIHJlc3VsdCA9IGFGaWVsZC0+c2V0VmFsdWVUb0lu
c3RhbmNlKGV4ZWMsIGluc3RhbmNlLmdldCgpLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIWluc3Rh
bmNlLT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSkp
Ci0gICAgICAgIGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBpbnN0YW5jZS0+ZW5kKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCmluZGV4IGIzYjY0MGFjYzU0ZjM0OGRjNWFmZTkyYzVmMzhmZTYy
Mjk0ODVmODEuLjgxZDRlYmQzYjRkYmI3MDk5MTE1ZGExMDI4MmIyOWZiZmZiMTg2ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKaW5kZXgg
MTNlMzJiYTYyMGUzNTA3ZTA0MmE5MGU4MTc0NDNkOTNhZjYzYjYwMi4uYWZiYTEwMjBkOTVkYWVi
NjNlMTdjN2ZiOTMyMTQxYWU4ZTk0ZDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQcm94
eUluc3RhbmNlIDogcHVibGljIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlIHsKICAgICBKU0M6OkJp
bmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6
OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6
OkZpZWxkKikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OworICAgIGJv
b2wgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZp
ZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKICAgICAKIAogICAgIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSogaW5zdGFuY2VQcm94eSgpIHsgcmV0dXJuIG1faW5zdGFuY2VQcm94eTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0K
aW5kZXggOWNkMGZiYzFiNGMyNTRkYTU0YzQxNDZlZGUyMDU4ZDdjYzBhZGMzMi4uNjcxNGU4Y2Y0
YWIyNzUzNjBkZDZhMDk5MTQ2YzU0ZDMwNzVhYWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogICAgIAogICAgIHVpbnQ2NF90IG1fc2VydmVy
SWRlbnRpZmllcjsKIH07CkBAIC05MSw5ICs5MSw5IEBAIEpTVmFsdWUgUHJveHlGaWVsZDo6dmFs
dWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2Up
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSkt
PmZpZWxkVmFsdWUoZXhlYywgdGhpcyk7CiB9CiAgICAgCi12b2lkIFByb3h5RmllbGQ6OnNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwg
SlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHZhbHVl
KSBjb25zdAogewotICAgIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5j
ZSktPnNldEZpZWxkVmFsdWUoZXhlYywgdGhpcywgdmFsdWUpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMs
IHRoaXMsIHZhbHVlKTsKIH0KIAogY2xhc3MgUHJveHlNZXRob2QgOiBwdWJsaWMgSlNDOjpCaW5k
aW5nczo6TWV0aG9kIHsKQEAgLTQxNiwxMCArNDE2LDEwIEBAIEpTQzo6SlNWYWx1ZSBQcm94eUlu
c3RhbmNlOjpmaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkKSBj
b25zCiAgICAgcmV0dXJuIG1faW5zdGFuY2VQcm94eS0+ZGVtYXJzaGFsVmFsdWUoZXhlYywgKGNo
YXIqKUNGRGF0YUdldEJ5dGVQdHIocmVwbHktPm1fcmVzdWx0LmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSkpOwogfQogICAgIAotdm9pZCBQcm94eUluc3RhbmNl
OjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1Zh
bHVlIHZhbHVlKSBjb25zdAorYm9vbCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogewog
ICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUHJveHlGaWVsZCo+KGZpZWxkKS0+c2VydmVySWRlbnRpZmllcigpOwogICAgIHVp
bnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+bmV4dFJlcXVlc3RJRCgpOwpAQCAt
NDM0LDEwICs0MzQsMTEgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHYKICAgICBpZiAobV9pbnN0
YW5jZVByb3h5KQogICAgICAgICBtX2luc3RhbmNlUHJveHktPnJlbGVhc2VMb2NhbE9iamVjdCh2
YWx1ZSk7CiAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgd2FpdEZvclJlcGx5PE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXF1ZXN0SUQpOwogICAgIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFByb3h5SW5zdGFuY2U6OmludmFsaWRhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCmluZGV4IGE5MDViM2RmMGI2OGFjNDhlZTJmYTFmY2YyYTg3ZjAzMTVh
YmQ3YmQuLmQ1NjFhZTE0OGMyMmY1OTdkN2YxYWU4NGNiN2QwZGY5MWMwY2EwYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAKQEAgLTI5NywyNyArMjk3LDI3IEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBK
U0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVj
dCkgewogICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgTlBJZGVudGlmaWVyIG5w
SWRlbnRpZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSk7CiAg
ICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFucElkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlm
ICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSB8fCAhdGhpc09i
amVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0LCBucElkZW50aWZpZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdGhyb3cg
YW4gZXhjZXB0aW9uIGhlcmU/Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQ
cm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBO
UFZhcmlhbnQgdmFyaWFudDsKICAgICB0aGlzT2JqZWN0LT5tX29iamVjdE1hcC0+Y29udmVydEpT
VmFsdWVUb05QVmFyaWFudChleGVjLCB2YWx1ZSwgdmFyaWFudCk7CkBAIC0zMjcsOSArMzI3LDEw
IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgLy8gdGhlIGNhbGwgaGFzIGZpbmlzaGVk
LgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHByb3RlY3Rvcih0aGlz
T2JqZWN0LT5tX29iamVjdE1hcCk7CiAKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIHsK
ICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFz
ZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+
c2V0UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFu
dCk7CisgICAgICAgIHJlc3VsdCA9IHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0
UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7
CiAKICAgICAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVj
U3RhdGUoZXhlYyk7CiAKQEAgLTMzNyw2ICszMzgsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SgogICAgIH0KIAogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmdmFyaWFudCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCmluZGV4IGE2YmJmN2M4N2M0Yzk4YTQ2Y2U1OWVjZWZiMzY2MGUwN2VhYjI0ZTYuLjhi
YWZlYjA2MGEyMTA2NmQ4ZWFhNjA4NzRjMDNhYzk5ZjBjZjRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApA
QCAtODUsNyArODUsNyBAQCBjbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QgewogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273135</attachid>
            <date>2016-03-06 05:10:32 -0800</date>
            <delta_ts>2016-03-06 09:49:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160306221016.patch</filename>
            <type>text/plain</type>
            <size>367486</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTQ5NGJjNWVjZTNkMjdmY2FlODRkNGNjMTkyMDI5OTIyYzBkODkyLi4zMmQwMGIyNDc0YTk4ZWRi
OTdkODE2YWM2MGQ4NjU2MWIxODExNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMTYtMDMtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgUmVmbGVjdC5zZXQuCisgICAgICAgIFRoZSBjaGFsbGVuZ2UgaW4gdGhpcyBwYXRjaCBpcyBS
ZWZsZWN0LnNldCByZXF1aXJlcyBib29sZWFuIHJlc3VsdCBvZiBbW1NldF1dLAorICAgICAgICB0
aGlzIGlzIG5vdCBwcm9wYWdhdGVkIGluIHRoZSBwcmV2aW91cyBKU0MgcHV0IGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHV0IGFuZCBwdXRCeUluZGV4
IHNpZ25hdHVyZSBmcm9tIGB2b2lkIHB1dCguLi4pYCBhbmQgYHZvaWQgcHV0QnlJbmRleCguLi4p
YCB0byBgYm9vbCBwdXQoLi4uKWAgYW5kIGBib29sIHB1dEJ5SW5kZXgoLi4uKWAsCisgICAgICAg
IG1vcmUgY29uc2lzdGVudCBzdHlsZSB0byB0aGUgRUNNQTI2MiBzcGVjJ3MgW1tTZXRdXS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIHNvIG1hbnkgcGFydCBvZiBXZWJLaXQuIEJ1dCBh
bG1vc3QgYWxsIHRoZSBjaGFuZ2VzIGFyZSBtZWNoYW5pY2FsIG9uZXMuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJTY29wZTo6cHV0KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmg6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpwdXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OnB1dCk6CisgICAgICAgICog
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxDdXN0b21TZXR0ZXIpOgorICAgICAgICAq
IHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQpOgorICAgICAgICAo
SlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXR0ZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZl
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dElubGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dCk6CisgICAgICAgICogcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6
cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OnB1dCk6
CisgICAgICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0U2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3RNYXlCZUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dERpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZSk6CisgICAgICAgICogcnVudGltZS9KU1By
b3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNQ
cm94eTo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAgICAg
ICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQp
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KToK
KyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2lu
dFNldCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6cHV0RW50
cnkpOgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVB1dCk6CisgICAg
ICAgIChKU0M6OlByb3h5T2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
cHV0QnlJbmRleENvbW1vbik6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwdXRCeUluZGV4
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9Q
dXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1
dCk6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVj
dFNldExhc3RJbmRleFN0cmljdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJ
bmRleE5vblN0cmljdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6cHV0KToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkpOgorICAgICAg
ICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmpl
Y3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAg
ICAgICogdGVzdHMvZXM2LnlhbWw6CisKIDIwMTYtMDMtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgbW9zdCBhZ2dyZXNzaXZlIGZvcm0gb2YgUmVnRXhw
VGVzdC9SZWdFeHBFeGVjIHNob3VsZCBzcGVjdWxhdGUgbW9yZSBhZ2dyZXNzaXZlbHkgdGhhbiBq
dXN0IGNlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MzhiYTQwMTQ5MTgxYjU3MWIxMzI2YzYyZjlhOTUzZWYy
MzllN2RjLi4yODE1MTNhZGExNzJlNmFiNzZhN2RhM2NjNWE4NDkxOTIzNmNkNDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkzIEBACisyMDE2LTAzLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VzdG9tU2V0
dGVyIHJldHVybnMgYm9vbGVhbiB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgcmVzdWx0IG9mIFtb
U2V0XV0uCisgICAgICAgIEFjY29yZGluZyB0byB0aGlzIGNoYW5nZSwgdGhpcyBwYXRjaCBtb2Rp
ZmllcyB0aGUgQ29kZUdlbmVyYXRvckpTIGFuZCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgQ3Vy
cmVudGx5LCBET00gZWxlbWVudHMnIFtbU2V0XV0gcmV0dXJuIHRydWUgd2hlbiB0aGUgc2V0dGVy
IGlzIGZvdW5kLgorICAgICAgICBUaGlzIGlzIGdvb2QgZm9yIHRoZSBmaXJzdCBzdGVwLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
aHJvd1NldHRlclR5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0QnlJbmRleCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT2JqZWN0
RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpwdXREZWxlZ2F0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RJbnRlcmZhY2U6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRzU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5v
ZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb2RlTmFtZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNl
cHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1
Y3RvclN0YXRpY1N0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpFbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpCeXRl
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdMb25nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpT
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPbmZv
byk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakFueUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpNdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW1t
dXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyYXdiZXJyeSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpJZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q2FjaGVkVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9u
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBl
ZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTYXR0cmlidXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
cmVhZG9ubHlDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAg
ICAgICAgKiBicmlkZ2UvYy9jX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRn
ZUpTQy5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnB1dCk6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZpZWxkOjpzZXRWYWx1
ZVRvSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5OjpzZXRWYWx1
ZUF0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6cHV0
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXRCeUluZGV4
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0
OjpwdXQpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDE2LTAzLTA2
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUgc2hvdWxkbid0IG11dGF0ZSBwbGFjZWhvbGRlciBlbGVtZW50IGlu
bGluZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFmOWVlN2E3MjNiYWNkYWQ0Yzc4ZjhhYTQ3
MmRjYTRhNTFlNmMxZTUuLjdkZWFmZGFlZDQ4M2JjMGNmOTllZmU2YjRhNzZhZmZlN2ZkYWE0M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wMy0wNiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQg
UmVmbGVjdC5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFzIHRoZSBzYW1lIHRvIE5QSlNPYmplY3QsIHdlIGp1c3QgcHJvcGFnYXRlIHRoZSByZXR1
cm5lZCB2YWx1ZSBvZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldFByb3BlcnR5Lgor
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5Rmll
bGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6
OnNldEZpZWxkVmFsdWUpOgorCiAyMDE2LTAzLTA2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgcGFnZSBjYWNoZSBjYXBhY2l0eSBmcm9tIDMgdG8g
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA5YzNhN2ZmODUyNTdiNGU2NzRhOGYwNGU2NjQ5ZmEzMGY5YjNjNjQ4
Li5jZDEyYmViZTMyZTM1OTU5MjljNWQ5YTk4MTdkNTZkYjZlZTY1YjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTYtMDMtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOUEpTT2JqZWN0OjpzZXRQ
cm9wZXJ0eSBtYXkgY2FsbCBgbWV0aG9kVGFibGUoKS0+cHV0YCBvcGVyYXRpb24sIGJ1dCB3ZSBp
bnRlbnRpb25hbGx5IGRvIG5vdCBwcm9wYWdhdGUgaXQgdG8gdGhlIGNhbGxlcidzIDo6cHV0Lgor
ICAgICAgICBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgd2UganVzdCB1c2UgdGhlIHJl
c3VsdCBvZiA6OnNldFByb3BlcnR5IGNhbGwuCisgICAgICAgIFRoaXMgaXMgYHRydWVgIHdoZW4g
OjpzZXRQcm9wZXJ0eSBhdHRlbXB0cyB0byBjYWxsIGBtZXRob2RUYWJsZSgpLT5wdXRgLgorICAg
ICAgICBJbiA6OnNldFByb3BlcnR5LCBhZnRlciBjYWxsaW5nIGBtZXRob2RUYWJsZSgpLT5wdXRg
LCA6OnNldFByb3BlcnR5IGZ1bmN0aW9uIGNsZWFycyB0aGUgZXhjZXB0aW9uIHN0YXRlLgorICAg
ICAgICBTbyB0aGlzIGlzIG5vdCB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHNpbXBsZSBkYXRh
IHByb3BlcnR5IHN0b3JlLiBSYXRoZXIsIHRoaXMgaXMgbGlrZSB0aGUgYWNjZXNzb3IuCisgICAg
ICAgIEluIEVDTUEyNjIgW1tTZXRdXSwgaXQgcmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGEgc2V0
dGVyLiBTbyB3ZSBqdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgOjpzZXRQcm9wZXJ0eS4K
KyAgICAgICAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBhIHNldHRlciBmb3IgdGhlIGdp
dmVuIFtbU2V0XV0gb3BlcmF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpwdXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisK
IDIwMTYtMDMtMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlZHVjZSBwYWdlIGNhY2hlIGNhcGFjaXR5IGZyb20gMyB0byAyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBhZGRkMjE5ODYzMzllM2MxZDBi
MWU0MGNlMmJhZTdmN2NkYjdmNzZkLi5lOTU2M2Y1NGNlYThiMjYzYjE0MzM1NjcyMWQ0Y2RkZDc5
YzVlNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aApAQCAtMTgxLDggKzE4MSw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFy
ZW50IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCA5NTIwMzlkY2NiODYyMjIwYzUzNjM0ZGM2ZjRjYzZhNDdlNjVk
NmY3Li5hNTUzNzIzNGJiMzJjYTY4NmRkMDZiMmFmZTlhMDdhOWQwMjU3ZjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtMjIyLDcgKzIyMiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lk
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNDYWxsYmFja09iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250
ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMjQ0LDEzICsyNDQsMTMgQEAKICAgICAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSog
c3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFt
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5LT5z
ZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CkBAIC0yNjEsNyAr
MjYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pT
KGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8
fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNzIsOSArMjcyLDggQEAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAm
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBw
dXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhl
Yy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0
eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0LDcg
KzI4Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
K2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0
b1JlZihleGVjKTsKQEAgLTMwNiwxMyArMzA1LDEzIEBACiAgICAgICAgICAgICBpZiAoZXhjZXB0
aW9uKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9K
UyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJs
ZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAg
ICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChwcm9w
ZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBlbnRyeS0+c2V0
UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTMyMyw3ICszMjIsNyBAQAog
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0z
MzEsNyArMzMwLDcgQEAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNU
YWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7
CiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChl
bnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggYzNl
ZmJkNTZkZDcwZGVhY2EzNjMzOTI0YTkyMjlkMzYxMzkzMjAxNS4uMzY1MDI0ZTg4ZjI2YWUxNDZh
OWU4YmE0Y2MyZjRjYmQ1YTM1NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtOTgsMTUgKzk4LDE1IEBAIGJvb2wgRGVidWdn
ZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBEZWJ1Z2dlclNjb3Bl
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGVidWdn
ZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwog
ICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKICAg
ICBzbG90LnNldFRoaXNWYWx1ZShKU1ZhbHVlKHRoaXNPYmplY3QpKTsKLSAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZlZjYwYzg5OWY3ZjE0ODNlMzJjYzdhODM4MzNl
MGFmOTQwNDcyZGIuLmUzNGY0OTdkN2ZiMzMzYWFlZTc2MDkyNDM4NjRmMzVjMGE3OGE1MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzQ1YmJlYzEyOWI2
YjdiODA1M2ZkYTA1ZTVhYjA2YjhhZjg3ZWMwNy4uZGRlNDlmMDg5N2I4YzgzMjMzODVlZjY4ZjE5
NzBkY2RhMGM3M2Q4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCBj
bGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAgIHJldHVybiBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwg
c2xvdCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
ICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyMmJjNDNkOWI5ODI3
Y2I5ZjFkMDI3NmY3MDlmN2VhNmMyMTAzNzI3Li5kMzc2YjYzMTlhOTU0MDljZWM2OWI4NTMxMWNm
YmUwNTkzODRlNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aApAQCAtNDksMTAgKzQ5LDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBD
b25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIGdldENvbnN0cnVj
dERhdGE7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgdHlwZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEJ5
SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRC
eUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9u
UHRyIHB1dEJ5SW5kZXg7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUZ1bmN0
aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggODI0MWQ2
ZTBjMDc1NjQ0NzFjNWE5ZGE1MmUxNmQxYmE3M2JlZjk5NS4uNDgxZjE2YjNlOWVlYWZiYzUzZTdk
NTE4NGVjNDU0NDcxYWQyYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBDbG9uZWRB
cmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm8KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIGFycmF5LCBtb2RlKTsKIH0KIAotdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKQEAgLTE3OCwxMSArMTc4LDEwIEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWCiAg
ICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSB7CiAg
ICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShleGVjKTsK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gU2hhZG93IHRoZSBnaXZl
biBQdXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNoaW5nLgotICAgICAgICBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUs
IGR1bW15KTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlk
ZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgK
aW5kZXggOGU3MTNkNWM2ZmE1Y2ExODQxMzRiMDUyYjJkNTg5OWEyNjc3YTMwZS4uNWQyMjIxODNj
OWU3MDgzMjk0YjE0MTc2ZGE0ZWY1NjE5N2NiYjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3Mg
Q2xvbmVkQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1Y2UzYTM2OTJkMmIw
NmM0MzYzNTNmMjJhMmYzN2RmYjhhZjdjZjNjLi44NzM2ZDE5MjUzMDE0NjkyYjc0MWMyZDg2ODJj
MDQwYThjYzU5OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
dXN0b21HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0N1c3RvbUdldHRlclNldHRlci5jcHAKQEAgLTM3LDE0ICszNywyNSBAQAogCiBjb25zdCBDbGFz
c0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXJTZXR0ZXIi
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlclNldHRlcikgfTsKIAotdm9p
ZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjdXN0b21HZXR0ZXJT
ZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29sIGlzQWNjZXNzb3Is
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVChzZXR0ZXIp
OworICAgIGJvb2wgcmVzdWx0ID0gc2V0dGVyKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFs
dWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICAvLyBBbHdheXMgcmV0dXJuIHRydWUg
aWYgdGhlcmUgaXMgYSBzZXR0ZXIgYW5kIGl0IGlzIG9ic2VydmVkIGFzIGFuIGFjY2Vzc29yIHRv
IHVzZXJzLgorICAgIGlmIChpc0FjY2Vzc29yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGN1c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCog
YmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRl
cio+KGN1c3RvbUdldHRlclNldHRlciktPnNldHRlcigpOworICAgIC8vIFJldHVybiBmYWxzZSBz
aW5jZSB0aGVyZSBpcyBubyBzZXR0ZXIuCiAgICAgaWYgKCFzZXR0ZXIpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNBY2Nlc3NvcikKICAgICAgICAg
dGhpc1ZhbHVlID0gYmFzZTsKLSAgICBzZXR0ZXIoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNW
YWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOworICAgIHJldHVybiBjYWxsQ3VzdG9tU2V0
dGVyKGV4ZWMsIHNldHRlciwgaXNBY2Nlc3NvciwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
dXN0b21HZXR0ZXJTZXR0ZXIuaAppbmRleCBkZGRkOGM2ZmI0M2U3OWEzYmUyOTJlZDJlODQzNzYz
N2ViNmFkMzg4Li4yNGJmZjg4NGUwYmU4MGQ4MGUyYWE5ZGZiZTViMTI2ZjNmYzliN2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIu
aApAQCAtNzAsNyArNzAsOCBAQCBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9OwogCi1KU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjdXN0b21H
ZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RCYXNlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0b21T
ZXR0ZXIoRXhlY1N0YXRlKiwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIsIGJvb2wg
aXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3VzdG9tR2V0dGVy
U2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IDY3ZjFiMDM0NWQ3
MWI4ZDMzNjJmNjZiYjY1ZTJkY2YzYTM1ZDJhYTQuLmVkY2M2ZjFiOThkNmRhZGY4ODk3ZThhZjJm
ZjAyMjQ0NTI5YjNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljQXJndW1lbnRzLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgR2VuZXJpY0FyZ3VtZW50
cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oCmluZGV4IDliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2UyNDZkZWUuLmQyZWIz
NzExNTIxMjY0NWMzMTZmNzlkNDJlMjNiNzgwZmRkYmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAt
OTcsNyArOTcsNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotdm9pZCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDgsMjggKzEwOCwyNyBAQAogICAgICAgICAgICAg
fHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpKSB7CiAgICAgICAg
IHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90
IGR1bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hlYWJsZSwgc28gd2Ugc2hhZG93
IHRoZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgotICAgICAgICBCYXNlOjpwdXQodGhpc09i
amVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1bW15
KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVp
Y2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgot
dm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4oY2Vs
bCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5B
Y2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnNldEluZGV4
UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyY2Q2NmU1Y2Q0MmZkMDFkYjUyZGUw
ZDc2YmNmNGQyMTkxZWY3Y2I5Li44NzMwNzk0YTM0MjhmNmQ1ZWE4ZTlhMmI4Y2JhMjE0YzE3YmM4
NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5j
cHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQogICAgIHJldHVybiBjYWxsKGV4
ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOwogfQogCi12
b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0
dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKK2Jvb2wgY2FsbFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIs
IEpTVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAK
ICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAo
ZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBn
ZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHZvaWQgY2FsbFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIs
IEpTVmFsdWUgdmFsCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0ZXIs
IGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBi
YXNlLCBhcmdzKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IGNkMjA0
MDI4ZWY5Y2FlMjlmODIxNGZjNmJmYWYzYWViNTU2ZjNmOTEuLjJiMjJiM2UwYjBjMDBjOTI3YmY1
Y2JkOTAwNDljZmU5MThlNTE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5saW5lIEdldHRlclNldHRlciog
YXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKIH0KIAogSlNWYWx1ZSBjYWxsR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIpOwotSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1
ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJv
b2wgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0
dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGFmZGJlMGRlNzZlZDc5YTJj
NzM0M2RhN2Y3MWIwNmE3ZWJlZDFhNGYuLjI2MzMyMzM0Y2M2MjRhZGJmODMyNDVmNWIzZmJjYWI3
MmIzNTkwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIH0KIAogLy8gRUNNQSAx
NS40LjUuMQotdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7CiAKQEAgLTE5OCwxMyArMTk4LDEyIEBAIHZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhCiAg
ICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUludDMyKGV4ZWMpOwogICAgICAg
ICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0gc3RhdGljX2Nhc3Q8ZG91YmxlPihuZXdMZW5n
dGgpKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLSAgICAgICAgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5p
c1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAg
IH0KIAotICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCkBAIC02NDQsNyArNjQzLDggQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IGxlbmd0aCgpOwot
ICAgICAgICBpZiAoYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBvbGRM
ZW5ndGgsIHZhbHVlLCB0cnVlKSkgeworICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwor
ICAgICAgICBpZiAoYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBvbGRM
ZW5ndGgsIHZhbHVlLCB0cnVlLCBwdXRSZXN1bHQpKSB7CiAgICAgICAgICAgICBpZiAoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpICYmIG9sZExlbmd0aCA8IDB4RkZGRkZGRkZ1KQogICAgICAgICAgICAg
ICAgIHNldExlbmd0aChleGVjLCBvbGRMZW5ndGggKyAxLCB0cnVlKTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA5ZjI3Mzgy
ZGViZDcxNzViNTA5YzFkZmE0OTUxYjllYmQyY2I4MmU2Li5jY2YzYmVlM2RjYTRiMzNhZGExMzZj
NDJkZTcwMWNkNmNiYTVhNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCmlu
ZGV4IDM1OWFlNDdhNTBiZTdlYzI4MDI4NzBjOTY3NzQ4NDY0MzBlMzQ0YjEuLjZkZGU0YzdkZmZj
YTMyMzMwMGM3ODU3ODdhNTI3NjBhYWM1MDZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCkBAIC03OSwxOCArNzksMTYgQEAgYm9vbCBK
U0FycmF5QnVmZmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci12b2lkIEpTQXJyYXlCdWZmZXI6OnB1dCgKK2Jvb2wgSlNBcnJheUJ1ZmZlcjo6cHV0KAogICAg
IEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Fy
cmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXIqPihjZWxsKTsKICAg
ICAKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlTGVu
Z3RoKSB7Ci0gICAgICAgIHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1w
dGluZyB0byB3cml0ZSB0byBhIHJlYWQtb25seSBhcnJheSBidWZmZXIgcHJvcGVydHkuIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzbG90
LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byBhIHJlYWQtb25seSBhcnJh
eSBidWZmZXIgcHJvcGVydHkuIik7CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNB
cnJheUJ1ZmZlcjo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggZDYzNGQ3MzYzZmU0YTUwOGI4YWI5ODBjZmIw
NjVmMzExYTdhYTZlOC4uZjc2NzUzODM3ODQ0ZjBhNmZiNWFjN2M0OWNhMjlhMzQ1MzQzNzkxNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAt
NTIsNyArNTIsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggM2JmY2FmMTUyMTk5MjViOTNlZDc4N2Y0MTUwMWM5
Yjc3YmI1NWIxMS4uZDRiNWNjMGM0MzZiNTgxYmViMTY5NDhjYTczMmYwMDYxZjYyMWM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcApAQCAtMTY0LDE3ICsxNjQsMTUgQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAKLXZvaWQgSlNBcnJheUJ1ZmZl
clZpZXc6OnB1dCgKK2Jvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKTsKLSAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWZmZXIpIHsKLSAgICAg
ICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRl
IHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWZm
ZXIpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0
dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3BlcnR5LiIpOwog
ICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpkZWZpbmVP
d25Qcm9wZXJ0eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5oCmluZGV4IDUyM2EyMDBmYmEyZDc3MmMyYjczZjJkNGM1ZmM2NWM3MTJmNmI5
YmYuLmIyY2Y1YTJiMTk5OWU1ZDdlYTJlOGE0ODc1ZWJlNDczOGUwODhiN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTQ3
LDcgKzE0Nyw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
ICAgICAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGI5ZGQwYTQx
N2Q4MDNiMGU0NWRhZWNlMjg4NDQ1ZWUxMmRmNTc4MzYuLmIzMWU1Nzk2ZDA2NzAxNDhkM2Y5Zjkx
ZDA3NmE0MDkyMmQxZDZjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCkBAIC0xMjksMTQgKzEyOSwxMiBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3lu
dGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAKIC8vIEVDTUEgOC43
LjIKLXZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0
aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJp
bWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVy
cyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgSlNPYmplY3QqIG9iaiA9IHN5bnRoZXNpemVQ
cm90b3R5cGUoZXhlYyk7CkBAIC0xNDcsNyArMTQ1LDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTU5LDE5ICsxNTcsMTUgQEAgdm9pZCBKU1Zh
bHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAg
ICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxT
ZXR0ZXIoZXhlYywgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmlj
dE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3Ry
aWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogCi0gICAgICAgICAgICBp
ZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxDdXN0
b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90
LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBD
dXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CiAKICAgICAgICAg
ICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBv
bmUgb2YgaXRzIAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFj
ZWQsIHNvIGJyZWFrIGhlcmUuCkBAIC0xODUsMjIgKzE3OSwyMiBAQCB2b2lkIEpTVmFsdWU6OnB1
dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwot
ICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1B
WF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hv
dWxkVGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBw
cm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQotICAgIAotICAgIGlmIChzeW50aGVz
aXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9y
UHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykp
Ci0gICAgICAgIHJldHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChz
eW50aGVzaXplUHJvdG90eXBlKGV4ZWMpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBp
ZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lk
IEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBjYmJmMjYxZmFmMzA0OTliZWNmMzgxMTQ3
ZmM3OGU0OTg1MDRlZjg2Li5hZGE4MDI5N2I4NDcxZjZiYjNkOTBlODQyNjI5NGQ5NmQ3NGRmZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yODYs
MTEgKzI4NiwxMSBAQCBjbGFzcyBKU1ZhbHVlIHsKIAogICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAKLSAgICB2
b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHZvaWQgcHV0SW5saW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1dElu
bGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0QnlJ
bmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSB0b1RoaXMoRXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAppbmRleCBjYzdjYjhkZjQ3OTM1YWRhMTQ0ZTFlYmY4NjgxMjlmZjRmOWJkYzU3Li4z
MzcyZWE2MDI1NWFhMzc3OTJlNDMzZWE4ZmNiMjI2N2Q0YmZkZDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgwMyw0MCAr
ODAzLDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBl
eGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGdldChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0YXRpY19jYXN0PGRvdWJsZT4ocHJvcGVydHlOYW1lKSkp
OwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0g
ICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkp
KQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisKKyAgICByZXR1cm4gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1B
TFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQorQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBw
dXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0
dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAg
ICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CiAgICAgYXV0byBwdXRNZXRob2QgPSBjZWxsLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0OwotICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09
IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAgICAgIEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0gSlNPYmplY3Q6OnB1dCkpCisgICAgICAgIHJldHVy
biBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IG90aGVyU2xvdCA9IHNsb3Q7Ci0gICAgcHV0TWV0
aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90aGVyU2xvdCk7CisgICAgYm9v
bCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgb3Ro
ZXJTbG90KTsKICAgICBzbG90ID0gb3RoZXJTbG90OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIGlmIChVTkxJ
S0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2Vs
bCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgaWYgKFVO
TElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworCisgICAgcmV0dXJuIGFz
Q2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBpbmxpbmUgSlNWYWx1
ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA0OGY1YTFhMjYzZGI1ZmEzMjIzNjVkMmQ5MzRh
Y2M4YzI3NjZlNDQxLi42ZjE1NzJmODNmODZlMWI5OWRlNzViNmY5OTIxZjEzOThmMjE1ZWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEwNCwyNSArMTA0
LDIzIEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5v
bmU7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsK
LSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2
YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGNlbGwtPmlzU3Ry
aW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCku
cHV0VG9QcmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOworICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTQ2VsbDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8
fCBjZWxsLT5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGws
IHNob3VsZFRocm93KTsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVj
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwog
ICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFs
dWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUs
IHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggZTBkZDE2NDRhNjczZTg3NzY4NmNiYzhl
ZDM1ZWFjODUzNjFkNzYyNy4uZTQxNDMxZmQxOGQyOTg0YmQ4NjMyMTJmMjI4Nzc4ZjI4NTNjNTYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE0NSw4ICsxNDUs
OCBAQCBjbGFzcyBKU0NlbGwgewogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7CiAgICAgY29u
c3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICAgICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNDZi
ZjFjYmJlOTYyNDE0YmJhZjc4NGNkZWZiMzM5YjNlNGEyOGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3
ZTQ4ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAKQEAgLTExMSwxOCArMTExLDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6
Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFW
aWV3OjpwdXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAg
ICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aAotICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMs
IHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0
eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKIAotICAgIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRl
MTA1OWU5ZjcyNTVhMThjNTgwNmZkYTQ5ZmMuLjc3NGI2ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRm
N2QxZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCmluZGV4IGZiODUwNTljM2EyYzJlNmM5ODVmOWQyMmM1ZDY5ZjFiYmQxZTY3MjUuLjc4YjUz
ZWQ3YTRlNWYzMWVjNmI1OTVkOTI2MWE4YTQxN2JmODMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC00MjEsMTMgKzQyMSwxMiBAQCB2b2lk
IEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVu
Y3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewotICAgICAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3Zl
cndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEt
MjYyIDguMTIuOS4KQEAgLTQzNywyMyArNDM2LDIxIEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJv
dG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cg
dGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEu
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAg
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2Fj
aGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKICAgICB9CiAgICAgaWYg
KHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSAmJiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0
cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5
IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9rYXksIG9rYXkpOwot
ICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKSB7CiAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5
SWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBK
U0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCBiZTkyMTAxNDE4MzljODE4OGZiNDE4MzBkOTI0YTdlZDI5NmQ4
YTYyLi5lODAxY2E1YjE3ZWFkMjRjYzkxYTQ0Y2NjYTZhMmY0MTdlZTA5ZGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNjksNyArMTY5LDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0g
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA4NTg5MzkyYWZjZGExZjViMDE5N2RjNDk1OWEy
NDdlMmRiMGZiYTNkLi40MDdhNzEyZjU4OGQwYWY4MjMyMGI1OThhMjI5N2YxZGNiMzg5NzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKQEAgLTI3NCwxMiArMjc0LDEyIEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBmcmllbmQgc3RydWN0
IFR5cGVkQXJyYXlDbGFzc0luZm9zOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYjZjNmFlZDg4MTRhOWFiMmRjY2QyMGU2MTFlNjdj
NGY5ZDljYmE5MS4uYTgwYWM2MDE5Y2I5MGE2Y2I2ZmFhZjg4ZjMxNzg0MzNiNGQ4ZWI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMwMywxOCArMzAzLDE2IEBACiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci12b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpwdXQoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQo
CiAgICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRo
aXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CkBAIC0zNjQsMTkgKzM2MiwxNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
Pgotdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJbmRleCgKK2Jv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiAgICAgSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwog
ICAgIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoCi0gICAgICAgICAgICB0aGlz
T2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVl
LCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywg
cHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0
LT5zZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09i
amVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggNmQxNzYwODZl
YWQzOTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZiZDBmNi4uZWZmZWJmYjQ1MTUxMTMxZmEwNTg1NDU0
NTg1YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMzgsMTMgKzM4
LDE1IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0
KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsK
ICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhl
YXA6OmhlYXAodGhpc09iamVjdCkpOwogICAgIGJvb2wgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5n
VG9Db25zdFByb3BlcnR5ID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZUNvbnN0QXNzaWdubWVudEVy
cm9yID0gc2xvdC5pc0luaXRpYWxpemF0aW9uKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRUb3VjaFdh
dGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlz
VGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRF
cnJvcik7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFRv
dWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
bHdheXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHksIGlnbm9yZUNvbnN0QXNzaWdu
bWVudEVycm9yLCBwdXRSZXN1bHQpOworICAgIHJldHVybiBwdXRSZXN1bHQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggNjQzZjA5NWRkMTk3OTllNWFh
MzI2MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0ZmQyZTA0NjE1MDBlODJkY2NkNjgwYjFhYzE2Y2Yx
ZDZmMDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3ltYm9sVGFibGUoKS0+c2l6ZSgpOyB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggMTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3YTZiNDlmMTkyMTM3ZjRlNy4uYTUwNDBjYmZjNGIz
NDQ3ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjIwLDE2ICs2MjAsMTcgQEAgYm9v
bCBKU0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5UHJvZmlsZXIoKSBjb25zdAogICAgIHJldHVybiBn
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c0xlZ2FjeVByb2ZpbGluZyh0aGlzKTsK
IH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2
YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAK
ICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCk7
CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xU
YWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlm
IChzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5
RXJyb3JzLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOWZjNjU5
Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMy4uODNlZTM4MTNlOGFjOThhMzdhMjJj
ZWI5NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDEsNyArNDAxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4OWQ5ZGQ2OTQzOTc3YzEyMjg1MjEwNDdkZDVkNzQy
ZTQuLjgyOTAxYTc5NDRkYmE2NGExMjAxZGYxNTQ5NTZkNGZhNDIzNTQyYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5j
cHAKQEAgLTgwLDIxICs4MCwyMiBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xleGlj
YWxFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+
KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCkgfHwgdGhpc09iamVjdC0+aXNMZXhpY2Fs
U2NvcGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gZmFsc2U7Ci0gICAgaWYg
KHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFk
T25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNl
OworICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwg
aWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1
bHQ7CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSBf
X3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0
YW5kYXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAg
Ly8gZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQgb2JqZWN0LgogICAgIEFTU0VSVCgh
dGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICB0aGlzT2JqZWN0
LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0xleGljYWxFbnZpcm9u
bWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBjNDBhZTg3Mzk1Y2MzMTIyZDY4MDMx
ZWMyZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3OWM2MTQ0MDI3ZjNkNjFmODYyNmJmMzQwYjhiM2Jk
YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1l
bnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZjA4ZmUzZDAyYjk5YzgzM2I1NTE3M2ViNTQw
ODRjMWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1OTJiMzIxOGQ3MmU3MzRhYzcxZTllY2RmMThhNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHZvaWQgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUq
CiAgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOwogfQogCi12b2lkIEpTTW9kdWxlRW52
aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGlu
Z3MgYXJlIGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0
aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKICAgICBpZiAocmVz
b2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZCkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmluZGV4IGY3ZWZhNjI2M2Iy
YjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMuLjQzNGJiN2MzZjhhMjFhZWI4ZDllZjU5YzIy
YWZlMWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgSlNNb2R1bGVF
bnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDBm
ZTljMzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJhYTljMzMwOWRiODcuLjQwZGRhNzMzM2ZmNzIwYWRm
NjA5OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTE1MSwxNyAr
MTUxLDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgogICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYg
KHNob3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaAppbmRleCAzN2U2NDJlODc0YTQ2ZDEzZjQ2NWUxYTdkN2M3ZGU0MWNmN2IyN2QxLi44Y2Zl
Y2ZkMGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4ZjQ3MjY2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAg
LTQ2LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CmluZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2UyZTAxYmJhN2JiOGE5MTQ3Zjg0ZmYuLjdiN2IzMjNl
OThhOTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4MWQyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTc4Niw3ICs3ODYsOCBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2Uo
ZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRT
ZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVudHJ5LmxvY2FsTmFtZSwgbmFtZXNw
YWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBm
YWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVs
ZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVj
dCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25s
eUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQo
ZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29s
dXRpb24udHlwZSkgewpAQCAtODE2LDggKzgxNywxMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpp
bnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVj
dQogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7
CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlh
YmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZz
ZXQoKTsKLSAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQotICAgICAgICAgICAgc3ltYm9s
VGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50
aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwg
Lyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVy
cm9ycyAqLyB0cnVlKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAg
ICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRU
b3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0
cnVlLCBwdXRSZXN1bHQpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9u
aW5zdGFudGlhdGlvbgpAQCAtODM3LDcgKzg0MCw4IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omlu
c3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1
CiAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1
bGVFbnZpcm9ubWVudCk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2lu
dFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUt
Pm5hbWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwg
LyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgICAgICBib29sIHB1dFJl
c3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRT
ZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5u
YW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8q
IGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5j
cHAKaW5kZXggYWY0NzM3ZTliMDJmNTcxMDMwNjVlZTdkOGU3YmEwNDBkZWMwZDJhYy4uY2I1MTVk
ODQ0MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5YzcyNDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKQEAgLTU4LDE0ICs1OCwxNiBAQCBi
b29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05v
dEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXRCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wpCitib29sIEpT
Tm90QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNOb3RBbk9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggMGMy
NmVjOThiNmZiMTdhODFjZWM5NTlmNzFkNWFjYzQ0OGE0NTdlMi4uOWM0Nzk0M2UyMTFhZGVjYWNj
YWY5YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaApAQCAtNjksOCArNjksOCBAQCBjbGFzcyBKU05vdEFuT2JqZWN0
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApp
bmRleCAyZjUyYTFmOTViYWEwMTY5NmU0MjI5Y2M5ZWJhZDQzMmY4NzFlNzM4Li4xYzQ5ZTY1MTM0
YWM1MmNlYjk4Y2I1Zjc3YWRkYWQ0NjcwNWMzNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zNzksMTIgKzM3OSwxMiBAQCBib29sIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotdm9pZCBKU09iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXRJbmxpbmUoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHB1dElubGlu
ZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDIzICszOTcsMjMgQEAgdm9pZCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hh
aW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09
IHRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdl
dERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsK
LSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICAgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZXhlYywgdGhpcywgZ3MsIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogICAgICAgICAg
ICAgICAgIGlmICghc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAg
ICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nl
c3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRyaWJ1dGVzICYgQ3VzdG9t
QWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwogICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IpCiAgICAgICAgICAgICAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tQWNjZXNzb3Iob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oZ3Mu
YXNDZWxsKCkpLT5zZXR0ZXIoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKG9iaiwganNDYXN0PEN1c3RvbUdldHRlclNldHRl
cio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTQyMywxNiArNDIzLDEzIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmotPnN0
YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+Y2xhc3NJbmZv
KCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0
eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBvYmos
IHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBlbnRy
eSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwgb2JqLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBp
ZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iaik7Ci0gICAgICAgICAgICBwcm94eS0+
UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHJveHktPlByb3h5T2Jq
ZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAg
ICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTQ0MSwxOCArNDM4LDIxIEBAIHZvaWQgSlNP
YmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAgIAogICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZSkgfHwgb2JqID09IHRoaXMpOwotICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1
dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBpZiAoIXB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgeworICAgICAg
ICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9v
bCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAg
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CkBAIC00
NjIsMTUgKzQ2MiwxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRVbmRl
Y2lkZWRGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgICAgIC8vIFJlbG9vcC4KLSAg
ICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRJbnQzMkZvclZh
bHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwog
ICAgIH0KQEAgLTQ4MiwyMiArNDgwLDIwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbcHJvcGVydHlOYW1lXS5zZXQoZXhlYy0+dm0oKSwg
dGhpc09iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzog
ewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICAv
LyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSA9IHZhbHVl
LmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICh2YWx1ZUFzRG91YmxlICE9IHZhbHVlQXNEb3VibGUp
IHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhl
Yy0+dm0oKSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4
KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBpZiAo
cHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCkBAIC01MDUsNyArNTAx
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtwcm9wZXJ0eU5hbWVdID0gdmFsdWVBc0RvdWJsZTsKICAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAgYnV0
dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgocHJvcGVydHlOYW1lICsgMSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE5vbkFy
cmF5V2l0aEFycmF5U3RvcmFnZToKQEAgLTUyNyw3ICs1MjMsNyBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsCiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAg
ICAgIAogICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKQEAgLTU0MiwyNiAr
NTM4LDI4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgCiAgICAgICAgIC8vIFVw
ZGF0ZSBsZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yIGFzIG5lY2Vzc2FyeS4KICAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA+PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKICAgICAgICAgICAgIGxlbmd0aCA9IHByb3BlcnR5TmFtZSArIDE7CiAgICAgICAgICAg
ICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVTbG90KSB7Ci0gICAg
ICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVt
VmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xvdC5z
ZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgdGhpc09iamVj
dC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQog
CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGVXaGVu
QXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYgdm0sIEFycmF5U3RvcmFnZSogc3RvcmFnZSkK
QEAgLTEyNDMsNyArMTI0MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20oRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVjKTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2Jq
ZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXR0ZXIpOwpA
QCAtMTI1NCwxMCArMTI1MiwxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldAogICAgIGlmICgh
KGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJs
ZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0Ojpw
dXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXR0ZXIpOwpAQCAtMTI2
OCwyNyArMTI2NiwyNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldAogICAgIGlmICghKGF0dHJp
YnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVl
KTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2
YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZh
bHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwog
Ci0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFT
U0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wg
cmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBBU1NFUlQoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAgLTEyOTYsMTgg
KzEyOTIsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0
aWVzKCk7CiAgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
V2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVy
dHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICBib29s
IHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0s
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKIAogICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc1dpdGhQ
cm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEhhc1Byb3BlcnR5KE8sIFApIGZyb20g
U2VjdGlvbiA3LjMuMTAgb2YgdGhlIHNwZWMuCkBAIC0xODI3LDcgKzE4MjUsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3Qm
IHNsb3QsIEpTVmFsdWUgZwogICAgIHNsb3Quc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdCh0aGlzLCBh
dHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSwgb2Zmc2V0KTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikKK2Jvb2wgSlNP
YmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlF
bnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIG1hcCA9IG1fYnV0dGVyZmx5LmdldCh0aGlzKS0+YXJyYXlTdG9yYWdl
KCktPm1fc3BhcnNlTWFwLmdldCgpOwpAQCAtMTgzOCw3ICsxODM2LDcgQEAgdm9pZCBKU09iamVj
dDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5
KiBlbnRyeUluTWEKICAgICAgICAgZWxzZSBpZiAob2xkRGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKQogICAgICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVzID0gZGVzY3JpcHRvci5hdHRy
aWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikgJiB+QWNjZXNzb3I7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpAQCAtMTg2MSwxMSArMTg1OSwxMiBAQCB2
b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJz
ZUFycmF5RW50cnkqIGVudHJ5SW5NYQogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwgbWFw
LCBhY2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5SZWFkT25seTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBBU1NF
UlQoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpOwogICAgIGVudHJ5SW5NYXAtPmF0
dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNj
cmlwdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRGVmaW5lZCBpbiBFUzUuMSA4LjEy
LjkKQEAgLTIwMDQsNyArMjAwMyw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJ
bmRleE1hcCgpCiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKIH0K
IAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRv
SW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRo
aXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNw
ZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBAIC0yMDE2LDE0
ICsyMDE1LDE0IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhP
bkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlmIChzdG9yYWdl
ICYmIHN0b3JhZ2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQoaSk7CiAgICAg
ICAgICAgICBpZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91bmQoKSAmJiAo
aXRlci0+dmFsdWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkpIHsKLSAgICAg
ICAgICAgICAgICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3Nw
YXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgICAgICBwdXRS
ZXN1bHQgPSBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJz
ZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50LT50
eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9iamVjdCogcHJv
eHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHByb3h5LT5w
dXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRo
aXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjAzNSwxNyArMjAzNCwxNyBAQCBib29sIEpTT2Jq
ZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGUoKTsKICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gYXNPYmplY3Qo
cHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIGFz
T2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3Vs
dCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChpbmRleGluZ1R5
cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NFUlQo
IWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMDU5LDE2ICsyMDU4LDE1IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhF
eGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICBp
ZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihp
LCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAgICAgICB8fCAo
aSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGks
IGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAgIHx8IGlu
ZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsK
ICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNwYXJzZUFycmF5
VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAgICAgICBtYXAt
PnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOwogICAgICAg
ICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAgICBhcnJheVN0
b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEpOwpAQCAtMjA3
OSwzMSArMjA3NywzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNhc2UgSW50MzJT
aGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAgIGJ1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBE
b3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgICAg
IGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgQVNTRVJU
KHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250aWd1b3VzU2hh
cGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwgdGhpcywgdmFs
dWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0FycmF5LmNwcC4K
LXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7
Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0
aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVl
KTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCitib29s
IEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
CkBAIC0yMTMwLDEyICsyMTI5LDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAg
ICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8sIG9yIGNhbid0
IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBhIHNwYXJzZSBt
YXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFw
KGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1hcC0+cHV0
RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKICAgICAv
LyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjE0NSw3ICsyMTQzLDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgp
IHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRo
cm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAgICAg
ICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjE1NCwxMCArMjE1Miw4IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1h
cCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4KICAgICAvLyBX
ZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMgc2V0
LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxzLgog
ICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNl
RW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVj
dG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5wdXRFbnRyeShl
eGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihs
ZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52
bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFnZSBhZnRlciBp
bmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgc3Rv
cmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjE3NSw5ICsyMTcxLDEwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjE4NywyNSArMjE4NCwy
MiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVj
LCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9y
YWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0gICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2llbnRseUJleW9u
ZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgp
IHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmco
KSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0aGUgU2xv
d1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVBcnJheVN0b3Jh
Z2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKLSAgICAgICAg
ICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpcywgZXhlYywg
aSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY3Jl
YXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjIxMywzOCArMjIwNywzMyBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2UgQUxM
X0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAg
ICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8gb3duIHByb3Bl
cnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGluIHRoZSBzcGFy
c2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJheVN0b3JhZ2Uo
KS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5z
KGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5zKGkpKSAmJiBh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
OgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhy
b3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9kZSwgQXJyYXlT
dG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQxOCwxNSArMjQwNywxNSBAQCBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmlu
c2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
ciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3Nv
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIG5h
bWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFjY2Vzc29yLT5z
ZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4g
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMp
OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQzNCw3ICsyNDIz
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7CiAKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7Ci0gICAg
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICBy
ZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
IH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKQEAgLTI3NDUsMTIgKzI3MzQsMTEgQEAgc3RhdGljIGJvb2wgcHV0RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBw
cm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TWF5
QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQot
ICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAg
ZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBkNjA2Mjc4YjdhNjljYjQ3ODYzOGIxNzE4MzFj
ZjNhN2NjODIzMjZhLi4yZjMwODc3ODFlMmIzZDY2MzVkMWY5ZDYxZDQ0NDU1ZjJjNTg1NWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1OCwxOCArMTU4
LDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAgICAKLSAgICBz
dGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJbmxpbmUoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAg
ICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lKSkg
ewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
cywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICByZXR1
cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAgLy8gVGhp
cyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0xOTEsNyArMTkxLDcg
QEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICAvLyBBIG5v
bi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGlyZWN0SW5kZXguCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJl
Y3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAgICAgICAg
IAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAgIHsKQEAgLTQ4NCwxNSAr
NDg0LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gIC0gYWNj
ZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0ZXMgd2lsbCBiZSByZXNw
ZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdpdGggdGhlIGdp
dmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5hbWUgaXMgYXNzdW1lZCB0
byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1dERpcmVjdChW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgYm9vbCBw
dXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMg
PSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgIHZv
aWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0RGlyZWN0
Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRHZXR0ZXIoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICB2b2lk
IHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRTZXR0ZXIoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02MTgsOCArNjE4LDggQEAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHB1dERpcmVjdChWTSYg
dm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0
VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRE
aXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50aWZp
ZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywg
dW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVy
dHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAg
SlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtNjkwLDcgKzY5MCw3
IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXMgZXF1aXZhbGVu
dCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZv
clByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0dXJucyAwIGlmIGludDMy
IHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVzZQogICAgIC8vIGluZGV4
aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLCBvciBiZWNhdXNl
CkBAIC04MzYsOCArODM2LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsKIAogICAg
IHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAgIHZvaWQgcHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOworICAgIGJvb2wgcHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOwogCiAgICAg
Ym9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5ld0xlbmd0aCk7CiAgICAg
dm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg0Niw3ICs4NDYsNyBAQCBjbGFz
cyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAgICB2b2lkIG5vdGlmeVBy
ZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAotICAgIGJvb2wgYXR0ZW1w
dFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0VG9JbnRlcmNlcHRQ
dXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAvLyBDYWxsIHRo
aXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQgYW5kIHlvdSdyZSBzdXJl
IHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAgLTg5MSw3ICs4OTEsNyBA
QCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0RGlyZWN0SW50
ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0YXRlKiBl
eGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBORVZFUl9J
TkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5F
IGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwpAQCAtOTAwLDkgKzkwMCw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFibGVWYWx1ZSogZmluZFBy
b3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIAotICAgIHZvaWQg
cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSosIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsKKyAgICBib29s
IHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50cnkqLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7CiAgICAgICAg
IAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wg
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGlyZWN0SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5k
ZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERp
cmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlKTsK
ICAgICAgICAgCkBAIC0xNDIzLDE5ICsxNDIzLDE5IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
CiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1
dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVy
KCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVm
aW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90
KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3Vz
dG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAgIHJldHVy
biBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZGIxNzBmMjk4Y2IyNTU5Yzdl
MzdhMTJlZTExMDJjMDA5MGM1MDhhMC4uOWQ1MzM0MWExNDgyYzJlOTY2YzMyNDBjMWIzMDJkZWUy
ODBlNjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpj
YW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHIKIH0KIAog
Ly8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwp
OwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAgQUxXQVlTX0lOTElORSB2
b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1lcyB0aGF0
IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sgaW4gdGhl
IG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhlYywg
dm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpCi0gICAgICAgICAg
ICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwot
ICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkg
eworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0SW5s
aW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCmluZGV4
IDkzN2MwODg3NDVmOGJiN2NmZmJkZjdhZTE5M2M1MmJlNWNmN2I3Y2YuLjYwODM1MjkzNTA5ZWUw
ZGUwNzE2OGFiZTdmN2EyZWFjNjQxZWE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBKU1Byb3h5OjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTUHJveHk6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRo
aXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcyYWJjZWJhODdmZmIwNmU3
NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2NmFmYjgwYjliYmFlZmVi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtNzYsOCArNzYs
OCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCop
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVhYzIzNmY3NmFiYWI4MWUy
OTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRmNTdjOGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1vZGUgewogdGVt
cGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlwZW5hbWUgU3lt
Ym9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgU3lt
Ym9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywKLSAgICBi
b29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywg
V2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwg
Ym9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCwgYm9vbCYgcHV0
UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHko
KSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJv
d1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHB1dFJlc3Vs
dCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTg4
LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgLy8gdGhlIHJp
Z2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0IHdh
bnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNldCh2
bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9sVGFibGVP
YmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwg
Ym9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQogewogICAg
IFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6
OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMs
IHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1v
ZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJv
cnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0
VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RU
eXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCgK
ICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wgc2hvdWxkVGhy
b3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAgIGJvb2wgc2hv
dWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBw
dXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxlUHV0PFN5
bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25v
cmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxlUHV0
PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQpCiAgICAg
ICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3QsIHByb3Bl
cnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0aGlzIHN0
YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0SW52YWxp
ZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5
cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBv
aW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBi
b29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAg
ICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8
U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8
U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAgICAgICAg
VmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CmluZGV4IDBiZjlkMmU5YjUwZmYyMjM0NjQ2NjQ2MWQ4NTliZTgzODI1OThhYWYuLjY3MzIzOTQ1
YzU5MDE2YjczMTc2ODU2ZjAzY2M1NzQwMmNhYTBhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjcgKzI4NCw0MCBAQCBpbmxpbmUgYm9vbCBnZXRTdGF0
aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBUaGlz
SW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVydHkgKHBv
c3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2FzIGNhbGxl
ZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJlaW5nIGFw
cGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQpLgogLy8g
J3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2luYWxseSBw
ZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNlbGYpLgot
aW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVWYWx1
ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitp
bmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7CiAgICAg
ICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKICAgICAgICAgICAg
IC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHku
CiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICB9
IGVsc2UgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3Nv
cikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBSZWFkT25seSkpIHsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEN1c3RvbUFjY2Vzc29yOwogICAgICAgICBKU1ZhbHVlIHVwZGF0ZVRoaXNWYWx1ZSA9
IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvciA/IHNsb3QudGhpc1ZhbHVlKCkg
OiBKU1ZhbHVlKGJhc2UpOwotICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShleGVjLCBK
U1ZhbHVlOjplbmNvZGUodXBkYXRlVGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSk7
Ci0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3IpCisgICAg
ICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBlbnRyeS0+cHJvcGVydHlQ
dXR0ZXIoKSwgaXNBY2Nlc3NvciwgdXBkYXRlVGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgIGlm
IChpc0FjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihiYXNlLCBl
bnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAgIH0gZWxz
ZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIC8qKgpAQCAtMzEyLDE0ICszMjUsMTQgQEAgaW5saW5lIHZvaWQgcHV0RW50
cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0
KiBiYXMKICAqIEl0IGxvb2tzIHVwIGEgaGFzaCBlbnRyeSBmb3IgdGhlIHByb3BlcnR5IHRvIGJl
IHNldC4gIElmIGFuIGVudHJ5CiAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBhbmQgcmV0
dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgKi8KLWlubGluZSBib29sIGxvb2t1
cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB2YWx1ZSwgY29u
c3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1
bHQpCiB7CiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gdGFibGUuZW50cnkocHJv
cGVydHlOYW1lKTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNlLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBwdXRFbnRyeShleGVjLCBlbnRyeSwgYmFzZSwgYmFz
ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCAwMTZh
MjY4NmVhYmRjMjViOGY3NTI5YzZkZGM2NjI2ZDk0NDdmMjk2Li5lMGFhZjZhNjk2MmQzMDI2ZGVk
ZWIyN2Y3YWMyZjdkN2UwMGVmZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCkBAIC0zNDUsMTIgKzM0NSwxMiBAQCBib29sIFByb3h5T2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlv
bj4KLXZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKK2Jvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQ
dXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50
aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkKQEAgLTM1OSw3ICszNTks
NyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0g
dGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBp
cyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0LiIpKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwpAQCAtMzY3LDEyICszNjcsMTAgQEAgdm9pZCBQ
cm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUs
IEpTVmFsdWUgdGhpc1ZhbHUKICAgICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIHNl
dE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZt
LnByb3BlcnR5TmFtZXMtPnNldCwgQVNDSUlMaXRlcmFsKCInc2V0JyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUuIikpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAgIGlmIChzZXRNZXRob2QuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICBwZXJmb3JtRGVmYXVsdFB1dCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm1EZWZhdWx0UHV0KCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtMzgxLDYyICszNzksNjEg
QEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
cHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBhcmd1bWVudHMuYXBwZW5kKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChleGVjLCBzZXRNZXRob2QsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJv
b2wgdHJhcFJlc3VsdEFzQm9vbCA9IHRyYXBSZXN1bHQudG9Cb29sZWFuKGV4ZWMpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCF0cmFwUmVzdWx0QXNCb29sKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwog
ICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0
b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVl
KCksIHB1dFZhbHVlKSkgewogICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1
cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCcuIikp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29y
RGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iu
c2V0dGVyKCkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24t
Y29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJl
dHVybiBmYWxzZS4iKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJv
eHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBQcm94eU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewotICAgICAgICBCYXNlOjpwdXQoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3Jl
UHJvdG8pCisgICAgICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiAKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkg
ewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVj
dC0+dGFyZ2V0KCkpOwotICAgICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdl
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0YXJn
ZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiAgICAgfTsKLSAgICB0aGlzT2JqZWN0LT5wZXJmb3JtUHV0KGV4ZWMsIHZhbHVl
LCBzbG90LnRoaXNWYWx1ZSgpLCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlzVmFs
dWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlP
YmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRo
cm93KQorYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpOyAK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewogICAg
ICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gc2hvdWxkVGhyb3c7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXNWYWx1ZSwgaXNTdHJpY3RNb2RlKTsgLy8gV2UgbXVzdCBwcmVzZXJ2ZSB0aGUgInRoaXMiIHRh
cmdldCBvZiB0aGUgcHV0QnlJbmRleC4KLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSkt
PnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOworICAgICAg
ICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlkZW50
LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOwogICAgIH07Ci0gICAgcGVyZm9ybVB1dChleGVjLCBw
dXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAg
ICByZXR1cm4gcGVyZm9ybVB1dChleGVjLCBwdXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBs
KCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKIH0KIAotdm9pZCBQcm94eU9iamVjdDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFByb3h5T2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+
cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhl
YywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CmluZGV4IGI2OGNhYzQ0YmVkOTA4OTY4YjZkZmIzNGUzOTAwMTEzZGFkNDFjNDIuLjU1NTk3OGNm
NWM4MjJlOTU1YTU3OTJmZjI0OGFjYmNjZDI2YzU1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAtNjIsOSArNjIsOSBAQCBjbGFzcyBQcm94eU9i
amVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU09iamVjdCogdGFyZ2V0KCkg
eyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGhhbmRsZXIoKSB7IHJldHVy
biBtX2hhbmRsZXIuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXhD
b21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IGJvb2wgcHV0QnlJbmRleENvbW1vbihFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
IAogcHJpdmF0ZToKICAgICBQcm94eU9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtOTIsNyAr
OTIsNyBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uPgogICAgIGJvb2wgcGVy
Zm9ybURlbGV0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlv
bik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci0g
ICAgdm9pZCBwZXJmb3JtUHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24pOworICAg
IGJvb2wgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKICAgICBi
b29sIHBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKICAgICBib29sIHBlcmZv
cm1Jc0V4dGVuc2libGUoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBwZXJmb3JtRGVmaW5lT3duUHJv
cGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHV0UHJvcGVydHlTbG90LmgKaW5kZXggOTBjNTdiZTkwZjhhMWE0ZGJkNmU0MzM1MGI1YmM2N2Zl
MzY0MWFjYy4uMTNhZDJkMzdhZThhMTBkZWE5ZmM3OWFmNGY5MzFjNGQyZWQyNTdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5
cGUgeyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJv
cGVydHksIEN1c3RvbVZhbHVlLCBDdXN0b21BY2Nlc3NvciB9OwogICAgIGVudW0gQ29udGV4dCB7
IFVua25vd25Db250ZXh0LCBQdXRCeUlkLCBQdXRCeUlkRXZhbCB9OwotICAgIHR5cGVkZWYgdm9p
ZCAoKlB1dFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdmFsdWUpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1dFZhbHVlRnVuYyko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFs
dWUpOwogCiAgICAgUHV0UHJvcGVydHlTbG90KEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzU3Ry
aWN0TW9kZSA9IGZhbHNlLCBDb250ZXh0IGNvbnRleHQgPSBVbmtub3duQ29udGV4dCwgYm9vbCBp
c0luaXRpYWxpemF0aW9uID0gZmFsc2UpCiAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4
IDg5NGFhZmE0Njk2OGU2MDMyYWZkOWRkOGJiZDc1YjI5ODE3OTA3OWQuLmM2ZDU3YjMxNzA5NDll
ZGE0YjM5NGM5NmVmNzVlOGJlOTc4NDdlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC00Myw2ICs0Myw3IEBACiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dE93bktleXMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3Rv
dHlwZU9mKEV4ZWNTdGF0ZSopOwogCiB9CkBAIC02OSw2ICs3MCw3IEBACiAgICAgaXNFeHRlbnNp
YmxlICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICByZWZsZWN0T2Jq
ZWN0T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwcmV2
ZW50RXh0ZW5zaW9ucyAgICAgICAgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgc2V0ICAgICAgICAgICAgICAgICAgICAgIHJlZmxl
Y3RPYmplY3RTZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAg
IHNldFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCkBAIC0yMzQsNiArMjM2LDI4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNp
b25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihyZXN1bHQpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMt
cmVmbGVjdC5zZXQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNl
dChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgSlNPYmpl
Y3QqIHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CisKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1l
bnQoMyk7CisKKyAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhh
cHBlbiBpbiBzdHJpY3QgbW9kZS4KKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOworICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBpc1N0cmljdE1vZGUpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJn
dW1lbnQoMiksIHNsb3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApp
bmRleCBiMGFhNWY2NGExMDVlOWVjYjkxNjI1NTM5MjA1NDU5ZjBmNGExYTQ4Li5lZWJmZDUwMmMx
MTk4MDY5NjI2NzQxOTlhOTlkODk5NWYzM2MzNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKIAotc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotc3RhdGljIHZvaWQgc2V0
UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNl
dFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC0yMzQsMTYgKzIzNCwy
MiBAQCBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNSZWdFeHBDb25zdHJ1Y3RvcihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdldFJpZ2h0
Q29udGV4dChleGVjKSk7CiB9CiAKLXZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFs
dWUpCitib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChh
dXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHlu
YW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkp
IHsKICAgICAgICAgY29uc3RydWN0b3ItPnNldElucHV0KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9TdHJpbmcoZXhlYykpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkKK2Jvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAg
IGlmIChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9
IGpzRHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSkpIHsKICAgICAgICAgY29uc3RydWN0b3ItPnNldE11bHRpbGluZShKU1ZhbHVlOjpkZWNv
ZGUodmFsdWUpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVj
dHVyZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgbmV3VGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKaW5kZXggNGZkYWViNGE0OWE5YzdiMWI1MWNiZjUzZGNjZDAyZTRlMDVhMmQ1MC4u
Yzk3MzlhZjczNmNlYzA5ZTZlNjcwMmI2ZWYwMjVlZjljNzVjOTljMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMzcsMjYgKzEzNywy
NiBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpOwogfQogCi1zdGF0aWMgdm9pZCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZh
bHVlKQorc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNldExh
c3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCB0cnVlKTsKKyAgICByZXR1cm4g
YXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgo
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
Z0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgYm9vbCByZWdF
eHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGFzUmVnRXhwT2Jq
ZWN0KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFs
dWU6OmRlY29kZSh2YWx1ZSksIGZhbHNlKTsKKyAgICByZXR1cm4gYXNSZWdFeHBPYmplY3QoSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlKSwgZmFsc2UpOwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJlZ0V4cE9iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7Ci0gICAgICAgIGFzUmVn
RXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOworICAgICAgICBib29sIHJlc3VsdCA9IGFzUmVnRXhwT2JqZWN0KGNlbGwpLT5zZXRM
YXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBzbG90
LnNldEN1c3RvbVZhbHVlKGFzUmVnRXhwT2JqZWN0KGNlbGwpLCBzbG90LmlzU3RyaWN0TW9kZSgp
CiAgICAgICAgICAgICA/IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdAogICAgICAgICAg
ICAgOiByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIEJhc2U6OnB1dChjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBKU1ZhbHVlIFJlZ0V4cE9i
amVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGE2MjZkMjkxMmVhOGVh
OGYyNTQzZjUxNzgyNjBlMmY4ZmQ1ZTdiNTcuLmI5NDFlZTkwZDUwNTRhNTI5MTJjNTdmZjUwMzAw
YmRkNDY4ZTcwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCkBAIC00MSwyMCArNDEsMjYgQEAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgc2V0UmVnRXhwKFZNJiB2bSwgUmVnRXhwKiByKSB7
IG1fcmVnRXhwLnNldCh2bSwgdGhpcywgcik7IH0KICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldExhc3RJbmRleChFeGVj
U3RhdGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCisgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhl
Y1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAgIHsKICAgICAgICAgbV9sYXN0SW5k
ZXguc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKLSAgICAgICAg
aWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQorICAgICAgICBpZiAoTElLRUxZKG1f
bGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoanNOdW1iZXIobGFzdEluZGV4KSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAg
Ym9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9v
bCBzaG91bGRUaHJvdykKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJc1dy
aXRhYmxlKSkKKyAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAg
ICAgICAgICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsK
LSAgICAgICAgZWxzZSBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNWYWx1ZSBnZXRMYXN0SW5kZXgoKSBj
b25zdAogICAgIHsKQEAgLTY1LDcgKzcxLDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU1N0cmlu
ZyopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggOWE1ZGE4Mzk1N2MzMjRlOGRhZjQwMjVkZjQxNDk1MmQ4
NGMwNTczOS4uYzhlMDAzYmY4NTk4MjYxYjkzNjBkN2NiNmI2MWI4YjdiNzJlYTY3MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RydWN0dXJlKiBTcGFyc2VBcnJheVZhbHVlTWFwOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQorYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIApAQCAtMTAyLDEw
ICsxMDIsMTAgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwKICAgICAgICAgcmVtb3ZlKHJlc3Vs
dC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBl
bnRyeS5wdXQoZXhlYywgYXJyYXksIHRoaXMsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0
dXJuIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKIH0K
IAogYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQpAQCAtMTQ2LDIwICsxNDYsMjAgQEAgdm9p
ZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBj
b25zdAogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihCYXNlOjpnZXQoKSwgYXR0cmlidXRl
cyk7CiB9CiAKLXZvaWQgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKK2Jvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoIShhdHRyaWJ1dGVzICYgQWNj
ZXNzb3IpKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAg
ICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgc2V0
KGV4ZWMtPnZtKCksIG1hcCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGNhbGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpn
ZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwor
ICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVl
LCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKIH0KIAogSlNWYWx1
ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAppbmRleCAw
NzU0YjUzZDlkNjAxZGYyYWNkN2JjYWYyZTk0YWVmNmQzMzdkZmEyLi5mNzFkYzk5NGU4OTRhNzI4
M2E1NzJiMzMyNmM5ZTg3NjFiOTIyZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVj
dCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAKICAg
ICB2b2lkIGdldChKU09iamVjdCosIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0
KFByb3BlcnR5RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIFNw
YXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBKU1Zh
bHVlIGdldE5vblNwYXJzZU1vZGUoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgU3BhcnNlQXJyYXlWYWx1ZU1hcCBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgbWF5IG11dGF0ZSB0
aGUgY29udGVudHMgb2YgdGhlIG1hcAotICAgIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBw
dXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU09iamVjdCosIHVu
c2lnbmVkLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUp
OwogICAgIEFkZFJlc3VsdCBhZGQoSlNPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgaXRlcmF0b3Ig
ZmluZCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX21hcC5maW5kKGkpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCAwOTg4ZDZkMDY5MDI5
ODkwNGVkNTk5YTFkZTg4YzdmM2QwNDU0YTNkLi5jMjg3ZWY4ZTBlMjZjNjU2ZWFhZGMyZmVlNzM4
MDRiYTA2NGM4MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKQEAgLTYwLDI1ICs2MCwyNSBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAotdm9pZCBT
dHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBKU09i
amVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUo
KS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cp
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChj
ZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wg
U3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggOTBlNmU1Y2NhNDRhYTA2NDc0MzVh
MGFhZjdiZDBiM2NmZGYxZGEwOS4uNGY4OTY5NzQzOWM1NjVmZjUwNmMzOWNmOWYwZjdiNWZmMTcw
ZTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgK
QEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9i
amVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGU0ZDIy
ZmEyZGIwZWFjZDc0ODg4Y2VlZDAyNmYzNjE2YTY3MjBlM2QuLmE0YzNlZWNkZTgyNjUzNzdlZjM2
MGQ0ZmUwMGExMjM5ZjU2NjAwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwK
QEAgLTEwNzcsNyArMTA3Nyw3IEBACiAtIHBhdGg6IGVzNi9SZWZsZWN0X1JlZmxlY3QuY29uc3Ry
dWN0X3NldHNfbmV3LnRhcmdldF9tZXRhX3Byb3BlcnR5LmpzCiAgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5zZXQuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9w
cm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLm1hdGNoXS5qcwogICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5w
cm90b3R5cGVbU3ltYm9sLnJlcGxhY2VdLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA1NGFj
YjdiNWViNjJkYTk1Yjg1YTU5ODc3ODZlMTJiMzYxZTVhOGQzLi40NjllNDExYjNiMDJmNTUwYzY0
Zjc1YmE3MjZiNTFlM2FlM2E0YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTMyMCw3ICsz
MjAsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUlu
Zm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0
eUluZm8ucHJvcGVydHlJRCk7Ci0gICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJv
cGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSB3cmFw
cGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFu
dCwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGJm
ZGNlZjQ4MDgwNTgxMjNlZTA2YmNkODA5NmU0MmYyNTg5MGQ4ZjAuLjIwYjlmZjUwNzQ5MmM2Yjk0
MmY2ZGRiNDA5YzMzYWQ0MDMyM2Y4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcApAQCAtNzAxLDkgKzcwMSwxMCBAQCB2b2lkIHRocm93U2VxdWVuY2VU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIHRocm93VHlwZUVycm9yKHN0YXRl
LCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKTsKIH0KIAotdm9pZCB0aHJvd1NldHRlclR5cGVF
cnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciog
YXR0cmlidXRlTmFtZSkKIHsKICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygi
VGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9u
bHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRl
eCAwOTE2ZGUxMzYwODVmMjQ1OWM1NThhODFkYWI0ZWY0NmU1YmY3MWY3Li5jODkwMmU2OWJlNzA3
ZjZkODY5MjkzYmUxZTc1YjE0ZWY4NjhlYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWls
cyB7CiB2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CiB2
b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhw
ZWN0ZWRUeXBlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NldHRlclR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB0aHJvd1NldHRlclR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1
bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
SW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFZhbHVlcyk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3Qg
Y2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggMjI3MWZkOWFiOWE3Y2FkMGUzYTNi
NThjOWI5MGUzODdmMDgwOTcyOS4uNjJiN2UzZmNiY2ZiOThmYWIyN2U5OTQ4ZmZjMjU4ZGFjYWZm
ZTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdN
YXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgog
ICAgIHJldHVybiBkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIGluZGV4KSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNiArODUsNyBAQCBib29sIEpT
RE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQo
KS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVl
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSAh
ZWM7CiAgICAgcmV0dXJuICFlYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMDE0OTZlZTZhNDdjOWVhZGQ2MjQ0OTI5M2JiMGVj
MGVlNWM5MjE0Mi4uOTMxMTEyMmQ0ZGVkNzVkOTY4N2E2OWI1NGU3ZTM2ZjY2ZGFlODNmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0x
MDMsNyArMTAzLDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKIHsK
ICAgICBBU1NFUlQobV93cmFwcGVkLT5kb2N1bWVudCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxFeGVjKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0
Y2hwb2ludFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50
LCB0b0pTKGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCku
cHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1
bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBwdXRSZXN1bHQpOwogfQogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IDg4ZTJmMWE4YzEyNzI4MDJjNDZhY2M2NjZmMDdkNGRjNmUzOWJmNzIuLjE2
YmIwZDBhOWFkNGYyZWI1MjNiMzc0YzZlNzhkN2I4NjlmMjk3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTM0MiwzMiArMzQy
LDM1IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgcmV0dXJuIGpzRE9NV2luZG93R2V0
T3duUHJvcGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKHRoaXNPYmplY3QsICpmcmFtZSwgZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCksIHNsb3QpOwogfQogCi12b2lkIEpTRE9NV2lu
ZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNE
T01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwg
ZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0
aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikKLSAgICAgICAgICAgIGxvb2t1cFB1dChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BI
YXNoVGFibGUsIHNsb3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5w
cmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uKSB7Cisg
ICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxvb2t1
cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRp
Y1Byb3BIYXNoVGFibGUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHB1dFJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzT2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5k
b3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0RPTVdpbmRvdzo6
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmZyYW1lKCkgfHwgIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBCYXNlOjpw
dXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggOWRmYmI0ZDUzZWZlYmM3ZDMzM2Q5MzRjMTg1NTE1MGUwNjYzOTEzZS4uMjI5ZTY4Mzk5OGUz
OTJlNTE2NzQ4ZTYyNTQ3ZmVmZjk4NGViODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkg
KzM4LDkgQEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gcGx1Z2luRWxlbWVu
dEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50LCBCYXNlPihleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1l
bnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxBcHBs
ZXRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0
UmVzdWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3Vz
dG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7
CiB9CiAKIENhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCog
Y2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYTJlOTE4MzEwYjFl
ZGE0OWUxN2I1ZDA4MGI4YzQ0OWUxMThmMDFkMi4uOTE5ZjY4NjYyYTExYjU4MmFkYWViMDgyYWZj
NTBiZDcyNWJhN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNI
VE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICByZXR1
cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlz
LCBzbG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBKU0hU
TUxFbWJlZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0
RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmpl
Y3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA4M2Y5OGY3ZjdjYzNkMTBiNTEzMTA2ZDVjNjI5YzU2
NDZkY2Y3MTZmLi40YTg2NDdmODllYmM3MDA3MjllYzgzMGNhNmRhYzliOWU4ZTczMWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6
OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQog
ICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTE9i
amVjdEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAK
LWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1l
bnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAg
cmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
dGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MT2JqZWN0RWxlbWVu
dDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDU3MGY5
Y2ZiODVlODljOGI1YTk2NmU0OTliMTA4ZDQxNzUzY2NjYjIuLjhmZmRhMTI2ZTMwNzNhMzY1NjMw
YTQ0YzE1OTU1MTBmODFhOTc5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC02MCw4ICs2MCw5IEBAIGJvb2wgSlNMb2NhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVz
dWx0ID0gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NSw3ICs3Niw3IEBAIGJvb2wg
SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNM
b2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUp
OwogICAgIGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVEb21haW5BY2Nlc3MpCi0gICAg
ICAgICAgICBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgICAgICAgICAgcHV0UmVzdWx0ID0gSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkBAIC0xMzcsOCArMTM4LDkgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwg
d3JhcHBlZCgpLnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0g
ZmFsc2U7CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVP
Zik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDdlYTczYjExMTNkMGFmN2MxY2U3MTdiYmJjODRh
ODgyNjc3MDk1NjkuLjI4NjUzNzJlOWFlNzFmNGE1Y2E1MDRlZTA4NDk1NWFiNWViMTRkYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBwbHVnaW5FbGVtZW50Q3Vz
dG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
SlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBwbHVn
aW5FbGVtZW50Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlT
bG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVj
dCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9i
amVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghc2NyaXB0T2JqZWN0LT5oYXNQ
cm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
c2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBzY3JpcHRPYmplY3QtPm1l
dGhvZFRhYmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IGRkYTNkMGM5ZjVm
ODA1ZjMxNzA3NTM4YmQ1Yjg4OTU4OWM5ZGQyNTYuLjQxMTY2MWU2ZmFlNWYzOTYyOGNlZmE5YTVl
ZjdjMThhY2I2NTI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC00MSw3ICs0MSw3IEBACiAgICAgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
LAogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBib29s
IHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0g
ICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0
UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBKU0M6OkNhbGxUeXBlIHBsdWdp
bkVsZW1lbnRHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1Z2luRWxlbWVudEN1
c3RvbUdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwgVHlwZSogZWxlbWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmlu
ZGV4IDNhYTdlOTQzOGVjZDE1OWI1YmYwYzliZjVhMmUzNWVkZmNkNzBiNjEuLjlmNTI1NjFiODU4
MzIwNTgwZGNiODNmMWE3YzVmMWFmODIzYTk2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEpTU3Rv
cmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TgogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNTdG9yYWdlOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgLy8gT25seSBwZXJmb3Jt
IHRoZSBjdXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3Bl
cnR5IGJ5IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1
cCBjYWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8g
Y2hlY2sKQEAgLTExOSwxMyArMTE5LDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAg
ICAgLy8gaWYgdHJ1ZSwgdGVsbHMgdGhlIGNhbGxlciBub3QgdG8gZXhlY3V0ZSB0aGUgZ2VuZXJp
YyBwdXQpLiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSB3aGV0aGVyCiAgICAgICAgIC8vIHB1dERlbGVn
YXRlKCkgZGlkIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIG9yIG5vdCAod2hp
Y2ggaXQgZGlkbid0IGluIHRoaXMKICAgICAgICAgLy8gY2FzZSBkdWUgdG8gdGhlIGV4Y2VwdGlv
bikuCisgICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuc2V0SXRlbShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYmUxZjhlNjgzYmFjN2MxNjU3ZjliZmFkNThmNzUz
Zjg5MTkwNzRjOC4uMzYxNjA3OTk2M2ViODA5YWUxNjJkYjMyN2E1NWE4YWM2ODI4MDljMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTEwNDEsOSArMTA0MSw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0
ZXJzCiAgICAgaWYgKCRvdmVycmlkZXNQdXQpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXRCeUlu
ZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlm
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9Owor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKSBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAgICB9CiAKICAgICBp
ZiAoISRoYXNQYXJlbnQpIHsKQEAgLTEzNDEsNyArMTM0MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUg
JHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkp
IHsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtc
biIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0xODg5LDcgKzE4
ODksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAg
ICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNl
dHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQpAQCAtMTkwMCw3ICsxOTAwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogCiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJz
ZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
O1xuIik7CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KQEAgLTIx
NDQsMTIgKzIxNDQsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0
ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2Ns
YXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9
UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90
b3R5cGUqPihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
dGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0yNTM5LDE4ICsyNTQwLDE4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0g
InNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y29uc3RydWN0
b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KICAgICBteSAkaGFzQ3VzdG9tU2V0dGVyID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0KQEAgLTI1
NTgsMjYgKzI1NTksMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICgk
aGFzQ3VzdG9tU2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
c3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2Ns
YXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAg
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUlu
ZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlz
T2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0gfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKQEAgLTI1ODUsMTggKzI1ODcsMTkgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRo
aXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleCwgdmFsdWUpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
LCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRl
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVz
dWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBz
aG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MjAsNyArMjYyMyw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
YXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
aWYgJHthdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRyaWJ1dGVDb25kaXRp
b25hbFN0cmluZzsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7cHV0
RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CkBAIC0yNjMy
LDcgKzI2MzUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVuaWVudFRoaXMifSkgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0
ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAg
ICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhlIHByb3RvdHlwZSBj
aGFpbiBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwpAQCAtMjY0NCw4ICsyNjQ3LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJv
cigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwg
XCIkbmFtZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRl
cmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBA
IC0yNjU1LDExICsyNjU3LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPndy
YXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCpz
dGF0ZSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVu
dEhhbmRsZXIiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3Rl
bmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxl
ckF0dHJpYnV0ZUV2ZW50TmFtZSgkYXR0cmlidXRlKTsKQEAgLTI2NzQsNiArMjY3Nyw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzZXRF
dmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBw
ZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVj
dG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4g
cy9Db25zdHJ1Y3RvciQvLzsKQEAgLTI2ODQsMTAgKzI2ODgsMTAgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAu
ICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIp
OwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC5cbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFs
dWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgICAg
ICAgICAgICAgbXkgJHB1dEZvcndhcmRzID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUHV0Rm9yd2FyZHMifTsKQEAgLTI2OTcsNyArMjcwMSw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7YXR0cmlidXRlVHlwZX0+IGZvcndh
cmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
fSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCFmb3J3YXJkZWRJbXBsKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBdHRyaWJ1dGUgaXMg
bm90IG51bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEg
cmVmZXJlbmNlLgpAQCAtMjcyNywxNCArMjczMSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVl
LmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSkpIHtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJGFyZ1R5cGVcIik7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4g
IiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25kaXRpb25hbCJ9KSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7
CiAKICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUp
KSB7CiAgICAgICAgICAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNvZGVHZW5lcmF0b3It
PlZhbGlkRW51bVZhbHVlcygkdHlwZSk7CkBAIC0yNzQzLDEzICsyNzQ3LDEzIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hl
Y2tzLCAibmF0aXZlVmFsdWUgIT0gXCIkZW51bVZhbHVlXCIiKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYgKCIg
LiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgImRvdWJsZSIgb3IgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVx
ICJmbG9hdCIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkge1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIFR5
cGVFcnJvcik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjc1Nyw3
ICsyNzYxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2Vw
dGlvbkNvZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjc4MSw2ICsyNzg1
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9u
TmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvbihcJWlt
cGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlKSBhbmQgbm90ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiQXJy
YXlCdWZmZXIiKSB7CkBAIC0yODA1LDYgKzI4MTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRzZXR0
ZXJSYWlzZXNFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ2NTYsOCArNDY2Miw4IEBA
IHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBkZWZp
bmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApp
bmRleCAyODRlZmY0ZTdhMmJiZjlhMGI0NjM0MjVjMjIzMWFjOGQ4ZDZiOTM4Li5kYmI2ZDRmYWJh
ZTA4NjM0ZDcyZDliYTVkZWVmZjNlYTFkOWMzMzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTc0LDE2ICsxNzQsMTYgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2
ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAK
aW5kZXggMDMyMjg3ZDhlOWM4ZmM2MzAzMTQ5NGZmYzU3MDg2NDMxYjFhYzQ1MC4uYjY5ZmVlMTA0
Nzc4MGQ2NmEzYjllZDI1Nzg4MWFhZjM4MDBlMTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xMzQsMTYgKzEzNCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDA1MTc0NzAyZGVjYmY2YjBmY2Vh
NDlkMzI4YmIxMTQ0NGM3YmY1MmIuLjViZWZjMTcyYWY5M2VkNTVlNTcwNzljNmJkYWM0ZTI4ZjBk
ZDkwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMzMsNyArMzMsNyBAQAogLy8gQXR0
cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBj
bGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTMxLDE2ICsx
MzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdG9yKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9
CiAKIGJvb2wgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCmluZGV4IGUzODc4OGI5ZTlhYTgyNjNlZWExZjYzMjQxZDc4OTA3Njcx
ZTg1NTAuLmIzNTExYTk1NDk5MzI0MTc4ZjY3Yjc0YmYwOTAxZTRiOTA5NGRjYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0
cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgpAQCAtMTY2LDE2ICsxNjYsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGZhODkwYjNkNTI4NjY1MWRiZTVh
MTZhZmRmZGE4NWQyYTZjYzEzNjIuLjI4ZjNjMGZmNGM0MmQxNDcwOWY3YWE3ZTAzYmMzMWYwMTFj
ODk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0y
MDEsMTYgKzIwMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA1
N2FmNTYwODZhZmMzZDllZjI0NzU0MmRlYzhmYzQyZDE3NTdjOGIzLi4zOWZmZTJiYjk4NDU1NGRh
MDRiMTViYjBkZDk0NDgzMmZkOWRmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xh
c3MgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTE2NSwxNiArMTY1LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAot
dm9pZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1
ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBhMGMwZmI0OGYzMmI3ODkxMDliN2Y2
ODk3ZTk0ZWRmMjI2ZDY0NmZmLi5hODY3OWMyMDcwNTE2YWU1MTMwZjdhMjA5NjliN2ZlNGQxNTlk
OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBK
U1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0
SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFeGNlcHRpb25Q
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCks
IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4g
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA3NWM0MTBjYzJiY2Vl
NWZhOGFhNzRlMjI3NDA4MWY5ZGFhMGY3YTNlLi4zYzQ4OGIzNjFmZTEyZDU2NjIyYTA4ZTljOTBi
Y2Q5ODZiZTZmMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
CkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEy
MywxNiArMTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0
ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwog
fQogCiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggZTc5NmVhNDdiOTZiZDY4MThmMmU1MjI1ZjJhMTIyZDdhMzBmNThlOS4uNDA4
YmRhMDk0NTdlNzc5ZDJmM2IyZmJhNmU4Y2NlMmFmMjc1ZTIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKQEAgLTgzLDQ3ICs4Myw0NyBAQAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxl
bWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBw
bGVtZW50YWxTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
U3VwcGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50YWxTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtNTk0LDE2NCArNTk0LDE2OCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50
ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSlNU
ZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTVGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpwdXQodGhpc09i
amVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
T2JqZWN0LCBzaG91bGRUaHJvdyk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJh
c2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwor
ICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVn
YXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAg
ICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0
YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVGVzdEludGVyZmFjZTo6c2V0SW1w
bGVtZW50c1N0YXRpY0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
dm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c1N0cjIobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzU3RyMyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAg
ICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEltcGxlbWVudHNTdHIzKCpzdGF0ZSwgdmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
Tm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05v
ZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzTm9kZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNO
b2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVt
ZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRl
cmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0
cjIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCi12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxTdHIzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIp
OwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRTdXBwbGVtZW50YWxTdHIzKCpzdGF0ZSwgdmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1l
bnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IGVhNmNlYzYyZDVmZmU1
ZjRiYzAxODYwMTE0M2ZjNTQ4ZGEwMDUwZGMuLjI0YzkwOGYwMzQxYmU0ZjUxZDQzZDUyZTExMmRi
ZWNiMzQyZTNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
SW50ZXJmYWNlPiB7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZv
aWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBib29sIHB1dERlbGVn
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJv
b2wmIHB1dFJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
CiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggODU2MjllMjk3ZTEzMTRhOWI4OTMxYzczODc2ODMzMjc1YWJjY2MyNC4uY2Q3
Njg3M2Q4MzJkMmVjNmE0MTIxMmVlOGFiNmRjYjQyOWM4MDE2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9t
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0
QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjYsMjggKzE2Niwy
OCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12
b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRy
aWJ1dGVSV0N1c3RvbSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0
dHJpYnV0ZVJXQ3VzdG9tIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldFRlc3RBdHRyaWJ1
dGVSV0N1c3RvbSgqc3RhdGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggOWE0OTcxYTg0
YWEzNGU4YTY1NDAxZWRmZTY2MzAzMzE1MjdlMGYyYi4uMzRkZTY4YzJhMzAyYTAxZWM1OTY3Njdk
NTZiOWY5NDVjMWZhYTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xMzEsMTYgKzEzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVl
KTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggOTljZmIzZDg0OTg4MjdlMTVlM2FlZTE3MWZiZWQ4NDVmZjc1MzQ4ZC4uNGRlNjZj
ZmI5ZWIwOWIxZmE2ODk5YWM5OTRlMmU4OThkMDQzYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBA
IC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCks
IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1
ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggZDhkNjBmNmE5Y2Mz
YmYwOWM4ODJmMTY2N2JlNGYyOGFjOTUwZjM3OC4uNjQyYmRlYzZiZWY2MDg1YTYzOWY5NGJlODA5
MjZiYjI4MzdjMWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMzYsOSArMzYsOSBAQAogLy8gQXR0cmli
dXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0Tm9k
ZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MTQ0LDMyICsxNDQsMzIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9kZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNU
ZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb2RlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
Tm9kZSIsICJuYW1lIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52
YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TmFtZShu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwCmluZGV4IDI1NGJjNjU4MmE5YWNiYTczOTgwNDk2YWI1MGJhMWY4ODdj
NDg0MzIuLjk3NzIzYWE4NTJiYzFkOTM2YWE3NGNkZjI5NjAyYmJiZTM5NTllN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTQ4LDE1ICs0OCwxNSBAQAogCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVh
ZG9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlv
bkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKQEAgLTMzMSw4NSArMzMxLDg1IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWlu
aXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNl
dEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12
b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0
ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXROb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRl
cm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIobmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0
dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRv
U3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldE5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRp
b25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2Vw
dGlvbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0
aW9uQXR0cihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNWQ0Mzk5NjgxYWMzYmU2
ODhiMTcwZWFkOWM2ZTRhYjUwMDI1YmRiNC4uOTY1MjAwZmUzMWUyZGEwZGE4YTE1MzQ4NzE2NjIw
NzYwYjg5NDRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIwMCwxNTkgKzIwMCwxNTkgQEAKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakVudW1BdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPY3Rl
dEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25l
ZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZv
aWQgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakxl
bmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdl
YWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialhN
TE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3ltYm9sQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seVN5bWJvbEF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRl
Z3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29s
ZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRo
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNz
YWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmljdFR5
cGVDaGVja2luZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tp
bmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21B
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhD
YWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI1Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jv
b2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0
YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0
YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpT
dHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9ialN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0Rmxv
YXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0
cmljdEZsb2F0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqSWQoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFz
aChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9i
alJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlRG91YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZUxvbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRh
YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2Vy
dmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpQ
dXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRG
b3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051
bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMjA0NCwxMTAwICsyMDQ0LDEwOTcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBU
ZXN0T2JqOjpzZXRTdGF0aWNTdHJpbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nIiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmciKSwgdmFsdWUpOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobmF0aXZlVmFsdWUgIT0gIiIgJiYg
bmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTEiICYmIG5hdGl2ZVZhbHVlICE9ICJFbnVtVmFsdWUy
IiAmJiBuYXRpdmVWYWx1ZSAhPSAiRW51bVZhbHVlMyIpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0RW51bUF0dHIobmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlu
dDhfdCBuYXRpdmVWYWx1ZSA9IHRvSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEJ5dGVBdHRyKG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAib2N0ZXRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9IHRvVUludDgoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRP
Y3RldEF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTaG9y
dEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQx
NihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpbXBsLnNldFNob3J0QXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgdWludDE2X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldFVuc2lnbmVkU2hvcnRBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImxvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TG9uZ0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJs
b25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
TG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJ
bnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHIo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldFRlc3RPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cihuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhN
TE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRYTUxPYmpBdHRyKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakNyZWF0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3Jl
YXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q3JlYXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRl
Z3JhbEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0
aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQz
MihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpbXBsLnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xl
YW5BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkYm9vbGVhbmF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZh
bHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJs
YXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50U3RyaW5nQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50
IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIsIG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFu
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwg
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUp
LT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRVUkxBdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5h
dGl2ZVZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRo
TWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9J
bnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UobmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1
ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVW
YWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRo
TWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlIGVjOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5n
KHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWSghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0
T2JqOjppbmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakN1
c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRDdXN0
b21BdHRyKCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak9uZm9vKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvbmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0
YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9v
RXZlbnQsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUsIG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmli
dXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aENhbGxXaXRo
QW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlLCBhY3RpdmVET01XaW5kb3coc3RhdGUp
LCBmaXJzdERPTVdpbmRvdyhzdGF0ZSksIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2Jq
KiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAg
aW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
KCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcygqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0
byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFz
Y3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsIHNj
cmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dENvbmRpdGlvbmFsQXR0cjEobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLXZv
aWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZl
cnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldENvbmRpdGlvbmFs
QXR0cjIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLXZvaWQgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjMiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5h
dGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldENvbmRpdGlvbmFsQXR0cjMobmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlv
bmFsQXR0cjQiKSwgdmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI0
IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5B
QkxFKENvbmRpdGlvbjIpCi12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyNSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjUiKTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhp
cy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAi
Y29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlv
bmFsQXR0cjUiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbEF0dHI2Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNiIp
OwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
c3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhp
cy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAi
Y29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgogCi12b2lkIHNldEpTVGVz
dE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmli
dXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgbmF0aXZlVmFsdWUgPSB7IHN0YXRlLT52bSgpLCB2YWx1ZSB9OwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11
dGFibGVQb2ludCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVlID0gSlNT
VkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRNdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQ
b2ludCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2lu
dDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRJbW11dGFibGVQb2ludChuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyYXdiZXJyeSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Qmx1ZWJlcnJ5KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0
RmxvYXQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBmbG9hdCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvRmxvYXQoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmljdEZsb2F0KG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImlkIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMy
KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGltcGwuc2V0SWQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBvYmplY3QuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwgdmFs
dWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJp
bmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRo
VW5kZWZpbmVkT3JOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXROdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak51bGxhYmxl
U3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3Ry
aW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJs
ZVN0cmluZ1ZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBu
YXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROdWxsYWJsZVN0cmluZ1ZhbHVlKG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0
dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFs
dWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKG5hdGl2ZVZhbHVlICE9ICIiICYmIG5hdGl2ZVZhbHVlICE9ICJP
cHRpb25hbFZhbHVlMSIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFsdWUyIiAmJiBuYXRp
dmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTMiKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialB1
dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpQdXRG
b3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InB1dEZvcndhcmRzQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9
IGZvcndhcmRlZEltcGwuZ2V0KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGltcGwuc2V0TmFtZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJp
YnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgUmVmUHRyPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKTsKICAgICBpZiAoIWZvcndh
cmRlZEltcGwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1
dG8mIGltcGwgPSAqZm9yd2FyZGVkSW1wbDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1
ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMTAz
MmZlODgzZTEwOGRlNDJjNGQyNDllNzYwMmRmMDgwODFhNzgwZi4uNDMzZmZkN2UzOGZmMjgwM2Nj
ZThhNWZjMzlhNTc2ZGY5MmYzMDljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApAQCAtMzYsNyArMzYsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0yMDMsMTYgKzIwMywxNiBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAKaW5kZXggNDRhYjQ0OWI4MmU4Y2YyY2Q2YjBkM2Q0ZTU3NWI5YTZjYjZlYzFmNC4u
MzY1MWVjMGU4Yzk2MGY5MTIwZDJkZTYwMDQ5ZWY0ODY2OThkMGNmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDIsNyArNDIsNyBAQAogLy8gQXR0cmlidXRlcwog
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CkBAIC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1
aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBz
ZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9t
T2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAog
dm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggOTEzZmZkYzIxYjU0MjM1MzQw
NGU2ZmRmNzkzNzAyZjJlNjY2NGVkMi4uZDJhZjQ0OTY0MGVmMThmNzY4ZDhkZmVhZTU0NGNjMjgx
NWM5MTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogLy8gQXR0cmlidXRlcwogCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VS
ZWFkb25seVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTIyMyw0OSArMjIzLDQ5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUs
IDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFZhbHVlKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwg
ImNhY2hlZFZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
LCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q2FjaGVkVmFsdWUobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGE3MTdj
NzA1N2NhMDA1OTgwN2U5ZjE2MGM3MzVkZjcxN2JjNmFmNDIuLjVlNDRjYmQ1MWJhNGJmNmE5ZDJj
ZDE2ZWI1MWM5MzViYWQ1YTRkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNjAsMjAgKzYw
LDIwIEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRl
ZnNVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExv
bmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yVGVzdFN1Yk9iaihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMzMyLDEyMSArMzMyLDEyMSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwg
c3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNl
dEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0
ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZl
cnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkTG9u
Z0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
ImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFs
dWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIAotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5
cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFs
dWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RUeXBl
ZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24obmF0
aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCAzNDFiMTBhNzRkY2MxZWY4N2UxOGU3
ODUwNjlmNWQyODYxMjk3ZTUyLi4zYmYyYTJkNTFmZmMyZTgyYjYyM2ZiNjRkYzI4Mjk4YWU4M2Y0
MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNhdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0
ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNhdHRyaWJ1dGVQcm90b3R5cGUg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE0MiwxNiArMTQy
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU2F0dHJpYnV0ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0
dHJpYnV0ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0
KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7
CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNhdHRyaWJ1
dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU3JlYWRvbmx5LmNwcAppbmRleCBjNWQwMDNjNDU4Y2RmNDNiZGYzYWEzOWU0NmQwODNlZjI1
ZWMyZTg1Li45NmU0Y2M3ODdlNjM5YjZlNjQzZWFhZDc2ZmNmZTlhYzU4MTUzMTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTcmVhZG9u
bHlQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAg
LTEyMywxNiArMTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU3JlYWRvbmx5OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTcmVhZG9ubHlDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU3JlYWRvbmx5UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTcmVhZG9ubHlQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
cmVhZG9ubHk6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGlt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCmluZGV4IGIyMzJi
MDY1ZTk0MjZhNDY3MDgxNmQ1ZmIwOWFhMGU2NzY4YTU3ZGMuLjNlZmE3MTQyMTkxZTI2OTQ0YzE4
YzUzNTVhMGNiMTNlOTFhZjZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBKU1ZhbHVlIENGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdCkgY29uc3QKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIAotdm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKK2Jv
b2wgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0
YW5jZSAqaW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgQ0luc3RhbmNl
KiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3QpOwogICAgIE5Q
T2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CkBAIC02OSwxNCArNjksMTcgQEAg
dm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElu
c3RhbmNlICppbnN0LCBKU1ZhbHVlIGEKICAgICAgICAgTlBWYXJpYW50IHZhcmlhbnQ7CiAgICAg
ICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIGFWYWx1ZSwgJnZhcmlhbnQpOwogCisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKLSAgICAgICAgICAgIG9iai0+X2Ns
YXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50aWZpZXIsICZ2YXJpYW50KTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG9iai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50
aWZpZXIsICZ2YXJpYW50KTsKICAgICAgICAgICAgIENJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2Vw
dGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgICAgICB9CiAKICAgICAgICAgX05QTl9SZWxlYXNl
VmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgK
aW5kZXggMTA2NzJlZDk4MWJmOWI2ODQ4ZjU2ZDMzMzM0NzJjZWJjN2VhZDg5Ny4uMjE5ZmVmZWU0
MzFmZDRiZTczMTI2OTZlOTk0MDVhZDg4NmU0ZGEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19y
dW50aW1lLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQ0ZpZWxkIDogcHVibGljIEZpZWxkIHsK
ICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZpZXIoaWRlbnQp
IHsgfQogCiAgICAgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0YW5jZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1Zh
bHVlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE5QSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gX2ZpZWxkSWRlbnRpZmllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaAppbmRleCAwMDI5NGZhZGQwNThhZDhkMDNkZjdhYjBjYzUyNGRmYjVkZjIyNmIy
Li41ZmU4NWY1ZjRjMTNkYjhmMWI3YmZjNWYwNzVjMGI5YTVkYzlkZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTUyLDcgKzUyLDcgQEAKIGNsYXNzIEZpZWxkIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRl
KiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
VG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB+RmllbGQoKSB7
IH0KIH07CkBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbnN0YW5jZT4gewogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkluc3RhbmNlKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBwdXQoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlydHVh
bEJlZ2luKCkgeyB9CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3MgQXJyYXkgewogICAgIGV4cGxp
Y2l0IEFycmF5KFJlZlB0cjxSb290T2JqZWN0PiYmKTsKICAgICB2aXJ0dWFsIH5BcnJheSgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVBdChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNW
YWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDc2ODk2NmI0ODk4YTE0YjdjM2U3
MGU5ZjkwNTRjZWExOGQ5ZjY2MGYuLmI1OGQxYjYyOWY0ODEwNDE1N2E2Mjg5MWIyMmU5ZTA1MDJm
YWFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC00
Niw3ICs0Niw3IEBAIGNsYXNzIE9iamNGaWVsZCA6IHB1YmxpYyBGaWVsZCB7CiAgICAgT2JqY0Zp
ZWxkKENGU3RyaW5nUmVmIG5hbWUpOwogICAgIAogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZy
b21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBK
U1ZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
SXZhclN0cnVjdFB0ciBfaXZhcjsKQEAgLTc4LDggKzc4LDggQEAgY2xhc3MgT2JqY0FycmF5IDog
cHVibGljIEFycmF5IHsKIHB1YmxpYzoKICAgICBPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyLCBS
ZWZQdHI8Um9vdE9iamVjdD4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChFeGVj
U3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW50
IGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVBdChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpT
VmFsdWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIE9iamVj
dFN0cnVjdFB0ciBnZXRPYmpjQXJyYXkoKSBjb25zdCB7IHJldHVybiBfYXJyYXkuZ2V0KCk7IH0K
QEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUo
Y29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBhNmM5MDIzODYw
OTBkZWIwOTA1MTI2NGVlZGQ5ODg5YTgxZTc4ZTBhLi41OTBmMjI1M2E5MTQyYjJjZTdlM2RjMWY4
MDg2OTM2MWJmN2EwYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGlkIGNvbnZlcnRWYWx1ZVRvT2JqY09i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIFt3ZWJTY3Jp
cHRPYmplY3RDbGFzcygpIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTp2YWx1ZSBvcmlnaW5Sb290
T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpXTsKIH0K
IAotdm9pZCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Citib29sIE9iamNG
aWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2Uq
IGluc3RhbmNlLCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKIHsKICAgICBpZCB0YXJnZXRPYmplY3Qg
PSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0
KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVl
KTsKQEAgLTEzOCw5ICsxMzgsMTEgQEAgdm9pZCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlMKICAgICAgICAg
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICAgICAgT2JqY0luc3RhbmNlOjpt
b3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIH0KIApAQCAtMTUyLDE2ICsxNTQsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0
U3RydWN0UHRyIGEsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCiB7CiB9CiAKLXZv
aWQgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGlu
ZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QK
IHsKICAgICBpZiAoIVtfYXJyYXkuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihp
bnNlcnRPYmplY3Q6YXRJbmRleDopXSkgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXJyYXkgaXMgbm90IG11dGFibGUuIikp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkgewogICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMg
YXJyYXkgc2l6ZS4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKICAgICAvLyBBbHdheXMgdHJ5IHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGFu
IE9iakMgb2JqZWN0LCBzbyBpdCBjYW4gYmUgcGxhY2VkIGluIHRoZQpAQCAtMTcwLDggKzE3Miwx
MCBAQCB2b2lkIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpCiAKICAgICBAdHJ5IHsKICAgICAgICAgW19hcnJh
eS5nZXQoKSBpbnNlcnRPYmplY3Q6b1ZhbHVlLm9iamVjdFZhbHVlIGF0SW5kZXg6aW5kZXhdOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNl
cHRpb24pIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
cnJvcihleGVjLCAiT2JqZWN0aXZlLUMgZXhjZXB0aW9uLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KIApAQCAtMjIxLDggKzIyNSw5IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
T2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcAppbmRleCBlZjk5MjQ4Mjc4NmY3MjVkNzBlZTFlZGMzZTA3MGNmNmI3
ZjhjYzVlLi5jNWIzYzRmN2U3YTIxNzkyNzEyMWIzYzdlN2MwZjFhNDk2NzFiNjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0xMTEsMzEgKzExMSwyOSBAQCBi
b29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUgKmV4ZWMsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKIH0KIAotdm9pZCBS
dW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJy
YXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgdGhpc09iamVj
dC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCks
IHZhbHVlKTsKICAgICAKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVB
cnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCitib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1
bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChpbmRleCA+PSB0aGlzT2JqZWN0LT5nZXRMZW5n
dGgoKSkgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9yIikpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVB
cnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNP
YmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUp
OwogfQogCiBib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5k
ZXggNThiYTA1OTZlNjQ5MWE4NDQ2MmJkYzZlZWQ4NjRjNTlhMjU5MmVjMS4uMDE4YzEzMjc4ZGJh
M2RkMDMxNzFlNTNlZmMwYWQ3ZGYwZTEwN2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5oCkBAIC01Niw4ICs1Niw4IEBAIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBK
U0FycmF5IHsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApp
bmRleCBmN2Y5OGJmOGMwZjUxNWUyYTk4ZWM2ZjllNzAxNjM5ODRlNjc2NjQ1Li5hNTczZTA1ZDc1
OWIwNzU3MGQyNjIxZDhlNjI2MDM2NDFjYmI0ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5jcHAKQEAgLTE2MSwyNSArMTYxLDI3IEBAIGJvb2wgUnVudGltZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywg
UHJvcGVyCiAgICAgcmV0dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBSdW50aW1lT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUnVudGltZU9i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
UnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7
CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CiAgICAgICAgIHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmpl
Y3QtPm1faW5zdGFuY2U7CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKICAgICAvLyBTZXQgdGhl
IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIEZp
ZWxkICphRmllbGQgPSBpbnN0YW5jZS0+Z2V0Q2xhc3MoKS0+ZmllbGROYW1lZChwcm9wZXJ0eU5h
bWUsIGluc3RhbmNlLmdldCgpKTsKICAgICBpZiAoYUZpZWxkKQotICAgICAgICBhRmllbGQtPnNl
dFZhbHVlVG9JbnN0YW5jZShleGVjLCBpbnN0YW5jZS5nZXQoKSwgdmFsdWUpOworICAgICAgICBy
ZXN1bHQgPSBhRmllbGQtPnNldFZhbHVlVG9JbnN0YW5jZShleGVjLCBpbnN0YW5jZS5nZXQoKSwg
dmFsdWUpOwogICAgIGVsc2UgaWYgKCFpbnN0YW5jZS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKQotICAgICAgICBpbnN0YW5jZS0+cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXN1bHQg
PSBpbnN0YW5jZS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogCiAgICAgaW5zdGFuY2UtPmVuZCgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJv
b2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCBiM2I2
NDBhY2M1NGYzNDhkYzVhZmU5MmM1ZjM4ZmU2MjI5NDg1ZjgxLi44MWQ0ZWJkM2I0ZGJiNzA5OTEx
NWRhMTAyODJiMjlmYmZmYjE4NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSdW50aW1lT2JqZWN0
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQz
ZDkzYWY2M2I2MDIuLmFmYmExMDIwZDk1ZGFlYjYzZTE3YzdmYjkzMjE0MWFlOGU5NGQ4N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUHJveHlJbnN0YW5jZSA6IHB1YmxpYyBKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZSB7CiAgICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZpZWxkTmFtZWQoSlND
OjpQcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGZpZWxkVmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCopIGNvbnN0OwotICAgIHZvaWQgc2V0
RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKiwg
SlNDOjpKU1ZhbHVlKSBjb25zdDsKKyAgICBib29sIHNldEZpZWxkVmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCosIEpTQzo6SlNWYWx1ZSkgY29uc3Q7CiAg
ICAgCiAKICAgICBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkqIGluc3RhbmNlUHJveHkoKSB7
IHJldHVybiBtX2luc3RhbmNlUHJveHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDljZDBmYmMxYjRjMjU0ZGE1NGM0MTQ2
ZWRlMjA1OGQ3Y2MwYWRjMzIuLjY3MTRlOGNmNGFiMjc1MzYwZGQ2YTA5OTE0NmM1NGQzMDc1YWFi
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBj
b25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1
ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsK
ICAgICAKICAgICB1aW50NjRfdCBtX3NlcnZlcklkZW50aWZpZXI7CiB9OwpAQCAtOTEsOSArOTEs
OSBAQCBKU1ZhbHVlIFByb3h5RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5maWVsZFZhbHVlKGV4ZWMsIHRoaXMpOwogfQog
ICAgIAotdm9pZCBQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgdmFsdWUpIGNvbnN0Citib29sIFBy
b3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3Rh
bmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKLSAgICBzdGF0aWNfY2FzdDxj
b25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMsIHRoaXMs
IHZhbHVlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUHJveHlJbnN0YW5jZSo+KGlu
c3RhbmNlKS0+c2V0RmllbGRWYWx1ZShleGVjLCB0aGlzLCB2YWx1ZSk7CiB9CiAKIGNsYXNzIFBy
b3h5TWV0aG9kIDogcHVibGljIEpTQzo6QmluZGluZ3M6Ok1ldGhvZCB7CkBAIC00MTYsMTAgKzQx
NiwxMCBAQCBKU0M6OkpTVmFsdWUgUHJveHlJbnN0YW5jZTo6ZmllbGRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCkgY29ucwogICAgIHJldHVybiBtX2luc3RhbmNlUHJv
eHktPmRlbWFyc2hhbFZhbHVlKGV4ZWMsIChjaGFyKilDRkRhdGFHZXRCeXRlUHRyKHJlcGx5LT5t
X3Jlc3VsdC5nZXQoKSksIENGRGF0YUdldExlbmd0aChyZXBseS0+bV9yZXN1bHQuZ2V0KCkpKTsK
IH0KICAgICAKLXZvaWQgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlJ
bnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVs
ZCwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgdWludDY0X3Qg
c2VydmVySWRlbnRpZmllciA9IHN0YXRpY19jYXN0PGNvbnN0IFByb3h5RmllbGQqPihmaWVsZCkt
PnNlcnZlcklkZW50aWZpZXIoKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBtX2luc3RhbmNl
UHJveHktPm5leHRSZXF1ZXN0SUQoKTsKQEAgLTQzNCwxMCArNDM0LDExIEBAIHZvaWQgUHJveHlJ
bnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVs
ZCwgSlNWYWx1ZSB2CiAgICAgaWYgKG1faW5zdGFuY2VQcm94eSkKICAgICAgICAgbV9pbnN0YW5j
ZVByb3h5LT5yZWxlYXNlTG9jYWxPYmplY3QodmFsdWUpOwogICAgIGlmIChrciAhPSBLRVJOX1NV
Q0NFU1MpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IHdhaXRGb3JSZXBseTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4o
cmVxdWVzdElEKTsKICAgICBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxF
eGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQ
cm94eUluc3RhbmNlOjppbnZhbGlkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBhOTA1YjNk
ZjBiNjhhYzQ4ZWUyZmExZmNmMmE4N2YwMzE1YWJkN2JkLi5kNTYxYWUxNDhjMjJmNTk3ZDdmMWFl
ODRjYjdkMGRmOTFjMGNhMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0yOTcsMjcgKzI5Nywy
NyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29s
IEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAg
ICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIE5QSWRlbnRpZmllciBucElkZW50aWZpZXIgPSBucElkZW50aWZpZXJGcm9t
SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwogICAgIC8vIElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMg
c3ltYm9sLgogICAgIGlmICghbnBJZGVudGlmaWVyKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9j
bGFzcy0+aGFzUHJvcGVydHkgfHwgIXRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+aGFz
UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyKSkgewogICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIHdlIHRocm93IGFuIGV4Y2VwdGlvbiBoZXJlPwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXRoaXNPYmpl
Y3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVydHkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTlBWYXJpYW50IHZhcmlhbnQ7CiAgICAgdGhpc09i
amVjdC0+bV9vYmplY3RNYXAtPmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoZXhlYywgdmFsdWUs
IHZhcmlhbnQpOwpAQCAtMzI3LDkgKzMyNywxMCBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgog
ICAgIC8vIHRoZSBjYWxsIGhhcyBmaW5pc2hlZC4KICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OlBs
dWdpblByb3RlY3RvciBwcm90ZWN0b3IodGhpc09iamVjdC0+bV9vYmplY3RNYXApOwogCisgICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKICAgICB7CiAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOwotICAgICAgICB0aGlz
T2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KHRoaXNPYmplY3QtPm1fbnBP
YmplY3QsIG5wSWRlbnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICByZXN1bHQgPSB0aGlzT2Jq
ZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KHRoaXNPYmplY3QtPm1fbnBPYmpl
Y3QsIG5wSWRlbnRpZmllciwgJnZhcmlhbnQpOwogCiAgICAgICAgIE5QUnVudGltZU9iamVjdE1h
cDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogCkBAIC0zMzcsNiArMzM4
LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICB9CiAKICAgICByZWxlYXNlTlBWYXJp
YW50VmFsdWUoJnZhcmlhbnQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgSlNOUE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCBhNmJiZjdjODdjNGM5OGE0
NmNlNTllY2VmYjM2NjBlMDdlYWIyNGU2Li44YmFmZWIwNjBhMjEwNjZkOGVhYTYwODc0YzAzYWM5
OWYwY2Y0YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgSlNOUE9i
amVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgSlND
OjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0
cnVjdERhdGEmKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwog
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273138</attachid>
            <date>2016-03-06 09:49:38 -0800</date>
            <delta_ts>2016-03-11 02:59:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160307024923.patch</filename>
            <type>text/plain</type>
            <size>417202</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTQ5NGJjNWVjZTNkMjdmY2FlODRkNGNjMTkyMDI5OTIyYzBkODkyLi5kNGI4OTdkODgwOWU2NjA2
N2Y4NGRhOGEyNjg4ZjUwODE4YTliOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMTYtMDMtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVj
ZWl2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBSZWZsZWN0LnNldC4KKyAgICAgICAgVGhlIGNoYWxsZW5nZSBp
biB0aGlzIHBhdGNoIGlzIFJlZmxlY3Quc2V0IHJlcXVpcmVzIGJvb2xlYW4gcmVzdWx0IG9mIFtb
U2V0XV0sCisgICAgICAgIHRoaXMgaXMgbm90IHByb3BhZ2F0ZWQgaW4gdGhlIHByZXZpb3VzIEpT
QyBwdXQgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBw
dXQgYW5kIHB1dEJ5SW5kZXggc2lnbmF0dXJlIGZyb20gYHZvaWQgcHV0KC4uLilgIGFuZCBgdm9p
ZCBwdXRCeUluZGV4KC4uLilgIHRvIGBib29sIHB1dCguLi4pYCBhbmQgYGJvb2wgcHV0QnlJbmRl
eCguLi4pYCwKKyAgICAgICAgbW9yZSBjb25zaXN0ZW50IHN0eWxlIHRvIHRoZSBFQ01BMjYyIHNw
ZWMncyBbW1NldF1dLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgc28gbWFueSBwYXJ0
IG9mIFdlYktpdC4gQnV0IGFsbW9zdCBhbGwgdGhlIGNoYW5nZXMgYXJlIG1lY2hhbmljYWwgb25l
cy4KKworICAgICAgICBXZSBhbHNvIGZpeCB0aGUgU3RyaW5nT2JqZWN0IGJlaGF2aW9yLiBJdHMg
OjpwdXQgZG9lcyBub3QgY2FsbCA6OnB1dEJ5SW5kZXggZXZlbiBpZiB0aGUgZ2l2ZW4gcHJvcGVy
dHlOYW1lIGlzIGluZGV4LgorICAgICAgICBUaGlzIGJ1ZyBpcyBmaWd1cmVkIG91dCBieSBSZWZs
ZWN0LnNldCB0ZXN0cy4gVGhlIGlzc3VlIGlzIGZpeGVkIGFuZCB0ZXN0ZWQgYnkgdGVzdHMvc3Ry
ZXNzL3N0cmluZy1vYmplY3QtcHV0LWJ5LWluZGV4LmpzLgorCisgICAgICAgIEN1cnJlbnRseSwg
dGhpcyBwYXRjaCBkb2VzIG5vdCBzdXBwb3J0IHJlY2VpdmVyIG1vZGlmaWNhdGlvbiBzdXBwb3J0
LgorICAgICAgICBUaGlzIHdpbGwgYmUgc3VwcG9ydGVkIGluIHRoZSBzdWJzZXF1ZW50IHBhdGNo
LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0QnlJbmRleCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OnB1dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJTY29wZS5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJh
eTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpw
dXQpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0
dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxs
U2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnB1dElubGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpw
dXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNEYXRhVmlldzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlND
OjpKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5l
U2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEdldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1w
dFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE5h
dGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAg
IChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAg
IChKU0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
c3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OnN5
bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAq
IHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAgKEpT
Qzo6bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9i
amVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24p
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6
CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVm
bGVjdE9iamVjdFNldCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAoSlND
OjpzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6c2V0TGFzdEluZGV4KToKKyAgICAgICAg
KiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXRFbnRyeSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6
OnB1dCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAg
IChKU0M6OmlzU3RyaW5nT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiB0
ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS5qczoKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAocmVjZWl2ZXJDYXNlLm9i
amVjdDIuc2V0IENvY29hKToKKyAgICAgICAgKHJlY2VpdmVyQ2FzZSk6CisgICAgICAgIChwcm94
eUNhc2UpOgorICAgICAgICAob2JqZWN0Q2FzZS5zZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAg
KG9iamVjdENhc2UuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5Q2FzZS5zZXQgZ2V0IHNo
b3VsZEJlKToKKyAgICAgICAgKGFycmF5Q2FzZS5nZXQgc2hvdWxkQmUpOgorICAgICAgICAoYXJy
YXlCdWZmZXJDYXNlLnNldCBnZXQgc2hvdWxkQmUpOgorICAgICAgICAoYXJyYXlCdWZmZXJDYXNl
LmdldCBzaG91bGRCZSk6CisgICAgICAgIChzZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGdl
dCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudENhc2UudGVzdDEpOgorICAgICAgICAoYXJn
dW1lbnRDYXNlLnRlc3QyKToKKyAgICAgICAgKGFyZ3VtZW50Q2FzZS50ZXN0Myk6CisgICAgICAg
IChhcmd1bWVudENhc2UudGVzdDQuc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVu
dENhc2UudGVzdDUuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFyZ3VtZW50U3RyaWN0Q2FzZS50
ZXN0MSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDIpOgorICAgICAgICAoYXJn
dW1lbnRTdHJpY3RDYXNlLnRlc3QzKToKKyAgICAgICAgKGFyZ3VtZW50U3RyaWN0Q2FzZS50ZXN0
NC5zZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFyZ3VtZW50U3RyaWN0Q2FzZS50ZXN0NS5n
ZXQgc2hvdWxkQmUpOgorICAgICAgICAoc3RyaW5nT2JqZWN0Q2FzZS5zZXQgZ2V0IHNob3VsZEJl
KToKKyAgICAgICAgKHN0cmluZ09iamVjdENhc2UuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGN1
c3RvbVNldHRlci50ZXN0MSk6CisgICAgICAgIChjdXN0b21TZXR0ZXIudGVzdDIpOgorICAgICAg
ICAoY3VzdG9tU2V0dGVyLnRlc3QzKToKKyAgICAgICAgKGN1c3RvbVNldHRlcik6CisgICAgICAg
IChyZWdFeHBMYXN0SW5kZXgpOgorICAgICAgICAoZnVuY3Rpb25DYXNlLmZ1bmMpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9zdHJpbmctb2JqZWN0LWRlZmluZS1vd24tcHJvcGVydHkuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9zdHJpbmctb2JqZWN0LXB1dC1ieS1pbmRleC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0
U2xvcHB5KToKKyAgICAgICAgKHRlc3RTdHJpY3QpOgorCiAyMDE2LTAzLTA1ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIG1vc3QgYWdncmVzc2l2ZSBmb3Jt
IG9mIFJlZ0V4cFRlc3QvUmVnRXhwRXhlYyBzaG91bGQgc3BlY3VsYXRlIG1vcmUgYWdncmVzc2l2
ZWx5IHRoYW4ganVzdCBjZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM4YmE0MDE0OTE4MWI1NzFiMTMyNmM2
MmY5YTk1M2VmMjM5ZTdkYy4uMjgxNTEzYWRhMTcyZTZhYjc2YTdkYTNjYzVhODQ5MTkyMzZjZDQy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxNi0wMy0wNiAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVm
bGVjdC5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEN1c3RvbVNldHRlciByZXR1cm5zIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIHJl
c3VsdCBvZiBbW1NldF1dLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhpcyBjaGFuZ2UsIHRoaXMg
cGF0Y2ggbW9kaWZpZXMgdGhlIENvZGVHZW5lcmF0b3JKUyBhbmQgdGVzdCByZXN1bHRzLgorCisg
ICAgICAgIEN1cnJlbnRseSwgRE9NIGVsZW1lbnRzJyBbW1NldF1dIHJldHVybiB0cnVlIHdoZW4g
dGhlIHNldHRlciBpcyBmb3VuZC4KKyAgICAgICAgVGhpcyBpcyBnb29kIGZvciB0aGUgZmlyc3Qg
c3RlcC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dGhyb3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
OjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERl
bGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVn
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6
cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW50ZXJmYWNlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmli
dXRlUldDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9k
ZU5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpM
b25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25n
TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVj
dGVkU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5z
aWduZWRJbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVk
VVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21J
bnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqT25mb28pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0
cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2ln
bmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVu
dGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0
YW5jZSk6CisgICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVs
ZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJh
eTo6c2V0VmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OnB1dCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6
cHV0QnlJbmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVu
dGltZU9iamVjdDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwog
MjAxNi0wMy0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIHNob3VsZG4ndCBtdXRhdGUgcGxhY2Vob2xkZXIg
ZWxlbWVudCBpbmxpbmUgc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZjllZTdhNzIzYmFjZGFk
NGM3OGY4YWE0NzJkY2E0YTUxZTZjMWU1Li43ZGVhZmRhZWQ0ODNiYzBjZjk5ZWZlNmI0YTc2YWZm
ZTdmZGFhNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMtMDYg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0g
SW1wbGVtZW50IFJlZmxlY3Quc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBcyB0aGUgc2FtZSB0byBOUEpTT2JqZWN0LCB3ZSBqdXN0IHByb3BhZ2F0
ZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRQ
cm9wZXJ0eS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpQcm94
eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKToKKwogMjAxNi0wMy0wNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHBhZ2UgY2FjaGUgY2FwYWNpdHkg
ZnJvbSAzIHRvIDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWMzYTdmZjg1MjU3YjRlNjc0YThmMDRlNjY0OWZh
MzBmOWIzYzY0OC4uY2QxMmJlYmUzMmUzNTk1OTI5YzVkOWE5ODE3ZDU2ZGI2ZWU2NWIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTAzLTA2ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlBKU09i
amVjdDo6c2V0UHJvcGVydHkgbWF5IGNhbGwgYG1ldGhvZFRhYmxlKCktPnB1dGAgb3BlcmF0aW9u
LCBidXQgd2UgaW50ZW50aW9uYWxseSBkbyBub3QgcHJvcGFnYXRlIGl0IHRvIHRoZSBjYWxsZXIn
cyA6OnB1dC4KKyAgICAgICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIGp1c3Qg
dXNlIHRoZSByZXN1bHQgb2YgOjpzZXRQcm9wZXJ0eSBjYWxsLgorICAgICAgICBUaGlzIGlzIGB0
cnVlYCB3aGVuIDo6c2V0UHJvcGVydHkgYXR0ZW1wdHMgdG8gY2FsbCBgbWV0aG9kVGFibGUoKS0+
cHV0YC4KKyAgICAgICAgSW4gOjpzZXRQcm9wZXJ0eSwgYWZ0ZXIgY2FsbGluZyBgbWV0aG9kVGFi
bGUoKS0+cHV0YCwgOjpzZXRQcm9wZXJ0eSBmdW5jdGlvbiBjbGVhcnMgdGhlIGV4Y2VwdGlvbiBz
dGF0ZS4KKyAgICAgICAgU28gdGhpcyBpcyBub3QgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBz
aW1wbGUgZGF0YSBwcm9wZXJ0eSBzdG9yZS4gUmF0aGVyLCB0aGlzIGlzIGxpa2UgdGhlIGFjY2Vz
c29yLgorICAgICAgICBJbiBFQ01BMjYyIFtbU2V0XV0sIGl0IHJldHVybnMgdHJ1ZSBpZiB0aGVy
ZSBpcyBhIHNldHRlci4gU28gd2UganVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIDo6c2V0
UHJvcGVydHkuCisgICAgICAgIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSBzZXR0ZXIg
Zm9yIHRoZSBnaXZlbiBbW1NldF1dIG9wZXJhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9i
amVjdDo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oOgorCiAyMDE2LTAzLTA2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWR1Y2UgcGFnZSBjYWNoZSBjYXBhY2l0eSBmcm9tIDMgdG8gMi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggYWRkZDIxOTg2
MzM5ZTNjMWQwYjFlNDBjZTJiYWU3ZjdjZGI3Zjc2ZC4uZTk1NjNmNTRjZWE4YjI2M2IxNDMzNTY3
MjFkNGNkZGQ3OWM1ZTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKQEAgLTE4MSw4ICsxODEsOCBAQCBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IDog
cHVibGljIFBhcmVudCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAKLSAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggOTUyMDM5ZGNjYjg2MjIyMGM1MzYzNGRjNmY0
Y2M2YTQ3ZTY1ZDZmNy4uYTU1MzcyMzRiYjMyY2E2ODZkZDA2YjJhZmU5YTA3YTlkMDI1N2YzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKQEAgLTIyMiw3ICsyMjIsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50Pgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwog
ICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTI0NCwxMyArMjQ0LDEzIEBA
CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGUqIHN0YXRpY1ZhbHVlcyA9IGpzQ2xhc3MtPnN0YXRpY1ZhbHVlcyhleGVjKSkgewog
ICAgICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVl
cy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkg
PSBlbnRyeS0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwpA
QCAtMjYxLDcgKzI2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjcyLDkg
KzI3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5KU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJp
ZGUgcHJvcGVydHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTI4NCw3ICsyODMsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgotdm9pZCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRS
ZWYgY3R4ID0gdG9SZWYoZXhlYyk7CkBAIC0zMDYsMTMgKzMwNSwxMyBAQAogICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0IHx8
IGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGlj
VmFsdWVzVGFibGUqIHN0YXRpY1ZhbHVlcyA9IGpzQ2xhc3MtPnN0YXRpY1ZhbHVlcyhleGVjKSkg
ewogICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVz
LT5nZXQocHJvcGVydHlOYW1lLmltcGwoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0g
ZW50cnktPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CkBAIC0zMjMsNyAr
MzIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBl
eGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24p
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzMxLDcgKzMzMCw3IEBACiAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0YXRpY0Z1bmN0aW9u
cyhleGVjKSkgewogICAgICAgICAgICAgaWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0g
c3RhdGljRnVuY3Rpb25zLT5nZXQocHJvcGVydHlOYW1lLmltcGwoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3Bw
CmluZGV4IGMzZWZiZDU2ZGQ3MGRlYWNhMzYzMzkyNGE5MjI5ZDM2MTM5MzIwMTUuLjM2NTAyNGU4
OGYyNmFlMTQ2YTllOGJhNGNjMmY0Y2JkNWEzNTRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTk4LDE1ICs5OCwxNSBAQCBi
b29sIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgRGVi
dWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiti
b29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUq
PihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFzY29wZS0+
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2Nv
cGUoKSk7CiAgICAgc2xvdC5zZXRUaGlzVmFsdWUoSlNWYWx1ZSh0aGlzT2JqZWN0KSk7Ci0gICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IGJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRleCBmZWY2MGM4OTlmN2YxNDgzZTMy
Y2M3YTgzODMzZTBhZjk0MDQ3MmRiLi5lMzRmNDk3ZDdmYjMzM2FhZWU3NjA5MjQzODY0ZjM1YzBh
NzhhNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRGVidWdnZXJTY29wZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3Qq
KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGM0
NWJiZWMxMjliNmI3YjgwNTNmZGEwNWU1YWIwNmI4YWY4N2VjMDcuLmRkZTQ5ZjA4OTdiOGM4MzIz
Mzg1ZWY2OGYxOTcwZGNkYTBjNzNkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MTYsNyAr
NDE2LDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgaW5kZXgsIHNsb3QpOwogICAgIH0KIAotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggMjJi
YzQzZDliOTgyN2NiOWYxZDAyNzZmNzA5ZjdlYTZjMjEwMzcyNy4uZDM3NmI2MzE5YTk1NDA5Y2Vj
NjliODUzMTFjZmJlMDU5Mzg0ZTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xhc3NJbmZvLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAg
IHR5cGVkZWYgQ29uc3RydWN0VHlwZSAoKkdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0cikoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0ciBn
ZXRDb25zdHJ1Y3REYXRhOwogCi0gICAgdHlwZWRlZiB2b2lkICgqUHV0RnVuY3Rpb25QdHIpKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1dEZ1bmN0aW9uUHRyKShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBQdXRGdW5jdGlvblB0ciBwdXQ7CiAKLSAgICB0eXBlZGVmIHZv
aWQgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgdHlwZWRlZiBi
b29sICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIFB1dEJ5SW5k
ZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4OwogCiAgICAgdHlwZWRlZiBib29sICgqRGVsZXRlUHJv
cGVydHlGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmlu
ZGV4IDgyNDFkNmUwYzA3NTY0NDcxYzVhOWRhNTJlMTZkMWJhNzNiZWY5OTUuLjQ4MWYxNmIzZTll
ZWFmYmM1M2U3ZDUxODRlYzQ1NDQ3MWFkMmIxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LCBleGVjLCBhcnJheSwgbW9kZSk7CiB9CiAKLXZvaWQgQ2xvbmVkQXJndW1lbnRzOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJndW1l
bnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNzgsMTEgKzE3OCwxMCBAQCB2b2lkIENsb25lZEFyZ3Vt
ZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRl
bnQsIEpTVgogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCkgewogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3Nh
cnkoZXhlYyk7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkdW1teSA9IHNsb3Q7IC8vIFNoYWRv
dyB0aGUgZ2l2ZW4gUHV0UHJvcGVydHlTbG90IHRvIHByZXZlbnQgY2FjaGluZy4KLSAgICAgICAg
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRl
bnQsIHZhbHVlLCBkdW1teSk7CiAgICAgfQogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVu
dHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgaWRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oCmluZGV4IDhlNzEzZDVjNmZhNWNhMTg0MTM0YjA1MmIyZDU4OTlhMjY3N2EzMGUu
LjVkMjIyMTgzYzllNzA4MzI5NGIxNDE3NmRhNGVmNTYxOTdjYmIzZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC02Miw3ICs2Miw3
IEBAIGNsYXNzIENsb25lZEFyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKaW5kZXggNWNl
M2EzNjkyZDJiMDZjNDM2MzUzZjIyYTJmMzdkZmI4YWY3Y2YzYy4uODczNmQxOTI1MzAxNDY5MmI3
NDFjMmQ4NjgyYzA0MGE4Y2M1OTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCkBAIC0zNywxNCArMzcsMjUgQEAKIAog
Y29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZvID0geyAiQ3VzdG9tR2V0
dGVyU2V0dGVyIiwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShDdXN0b21HZXR0ZXJTZXR0ZXIp
IH07CiAKLXZvaWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBiYXNlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgY2FsbEN1c3RvbVNldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciwgYm9vbCBp
c0FjY2Vzc29yLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NF
UlQoc2V0dGVyKTsKKyAgICBib29sIHJlc3VsdCA9IHNldHRlcihleGVjLCBKU1ZhbHVlOjplbmNv
ZGUodGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSk7CisgICAgLy8gQWx3YXlzIHJl
dHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgc2V0dGVyIGFuZCBpdCBpcyBvYnNlcnZlZCBhcyBhbiBh
Y2Nlc3NvciB0byB1c2Vycy4KKyAgICBpZiAoaXNBY2Nlc3NvcikKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3Nvciwg
SlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGpzQ2FzdDxDdXN0b21H
ZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5zZXR0ZXIoKTsKKyAgICAvLyBSZXR1
cm4gZmFsc2Ugc2luY2UgdGhlcmUgaXMgbm8gc2V0dGVyLgogICAgIGlmICghc2V0dGVyKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzQWNjZXNzb3Ip
CiAgICAgICAgIHRoaXNWYWx1ZSA9IGJhc2U7Ci0gICAgc2V0dGVyKGV4ZWMsIEpTVmFsdWU6OmVu
Y29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICByZXR1cm4gY2Fs
bEN1c3RvbVNldHRlcihleGVjLCBzZXR0ZXIsIGlzQWNjZXNzb3IsIHRoaXNWYWx1ZSwgdmFsdWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKaW5kZXggZGRkZDhjNmZiNDNlNzlhM2JlMjky
ZWQyZTg0Mzc2MzdlYjZhZDM4OC4uMjRiZmY4ODRlMGJlODBkODBlMmFhOWRmYmU1YjEyNmYzZmM5
YjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0
dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0
dGVyU2V0dGVyLmgKQEAgLTcwLDcgKzcwLDggQEAgY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ3VzdG9tU2V0dGVyIG1fc2V0dGVyOwogfTsKIAot
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
YWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0
dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKTsKK0pTX0VY
UE9SVF9QUklWQVRFIGJvb2wgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGN1
c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJhc2UsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAppbmRleCA2
N2YxYjAzNDVkNzFiOGQzMzYyZjY2YmI2NWUyZGNmM2EzNWQyYWE0Li5lZGNjNmYxYjk4ZDZkYWRm
ODg5N2U4YWYyZmYwMjI0NDUyOWIzZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIEdlbmVy
aWNBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50c0lubGluZXMuaAppbmRleCA5YjE4MDAxODU3ODEwNWM1NTE2OTcyMGFlNTg3N2MzZTNlMjQ2
ZGVlLi5kMmViMzcxMTUyMTI2NDVjMzE2Zjc5ZDQyZTIzYjc4MGZkZGJlZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXZv
aWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihj
ZWxsKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTA4LDI4ICsxMDgsMjcgQEAKICAg
ICAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkg
ewogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyh2bSk7CiAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBkdW1teSA9IHNsb3Q7IC8vIFRoaXMgcHV0IGlzIG5vdCBjYWNoZWFibGUsIHNv
IHdlIHNoYWRvdyB0aGUgc2xvdCB0aGF0IHdhcyBnaXZlbiB0byB1cy4KLSAgICAgICAgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZh
bHVlLCBkdW1teSk7CiAgICAgfQogICAgIAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nl
c3NJbmRleFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0
SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KLXZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICBpZiAodGhpc09i
amVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGluZGV4KSkgewogICAgICAgICB0aGlzT2JqZWN0
LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHJldHVybiBCYXNlOjpwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXggMmNkNjZlNWNkNDJm
ZDAxZGI1MmRlMGQ3NmJjZjRkMjE5MWVmN2NiOS4uODczMDc5NGEzNDI4ZjZkNWVhOGU5YTJiOGNi
YTIxNGMxN2JjODQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcikKICAgICByZXR1
cm4gY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgQXJnTGlzdCgp
KTsKIH0KIAotdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiti
b29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0
dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBHZXR0
ZXJTZXR0ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJT
ZXR0ZXIpOwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsKICAg
ICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCiAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBKU09iamVjdCog
c2V0dGVyID0gZ2V0dGVyU2V0dGVyT2JqLT5zZXR0ZXIoKTsKQEAgLTEwMyw2ICsxMDMsNyBAQCB2
b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0
dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERh
dGEoc2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgYmFzZSwgYXJncyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApp
bmRleCBjZDIwNDAyOGVmOWNhZTI5ZjgyMTRmYzZiZmFmM2FlYjU1NmYzZjkxLi4yYjIyYjNlMGIw
YzAwYzkyN2JmNWNiZDkwMDQ5Y2ZlOTE4ZTUxN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIGlubGluZSBHZXR0
ZXJTZXR0ZXIqIGFzR2V0dGVyU2V0dGVyKEpTVmFsdWUgdmFsdWUpCiB9CiAKIEpTVmFsdWUgY2Fs
bEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKTsK
LUpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CitKU19FWFBPUlRf
UFJJVkFURSBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IGdldHRlclNldHRlciwgSlNWYWx1ZSwgRUNNQU1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBhZmRiZTBk
ZTc2ZWQ3OWEyYzczNDNkYTdmNzFiMDZhN2ViZWQxYTRmLi4xYzI5MGM4MjdjMzNlYjdhNWQ5ZDBh
OTE3ODMyNTAzMWVjYTg4NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgICAg
IC8vIGEuIElmIHRoZSBbW1ZhbHVlXV0gZmllbGQgb2YgRGVzYyBpcyBhYnNlbnQsIHRoZW4KICAg
ICAgICAgLy8gYS5pLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBkZWZhdWx0IFtb
RGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2QgKDguMTIuOSkgb24gQSBwYXNzaW5n
ICJsZW5ndGgiLCBEZXNjLCBhbmQgVGhyb3cgYXMgYXJndW1lbnRzLgogICAgICAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVj
dChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNo
YW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgcmV0
dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNo
YW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKTsKICAgICAgICAgLy8gZnJvbSBFUzUuMSA4LjEyLjkg
MTAuYS4KICAgICAgICAgaWYgKCFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpICYmIGRlc2NyaXB0
b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKQEAg
LTE5MCw3ICsxOTAsNyBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogfQogCiAvLyBFQ01BIDE1
LjQuNS4xCi12b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihj
ZWxsKTsKIApAQCAtMTk4LDEzICsxOTgsMTIgQEAgdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAg
ICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAg
IGlmICh2YWx1ZS50b051bWJlcihleGVjKSAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0
aCkpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICB0aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAg
fQogCi0gICAgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKQEAgLTY0NCw3ICs2NDMsOCBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2U6IHsKICAgICAgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbGVuZ3RoKCk7Ci0g
ICAgICAgIGlmIChhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExl
bmd0aCwgdmFsdWUsIHRydWUpKSB7CisgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Cisg
ICAgICAgIGlmIChhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExl
bmd0aCwgdmFsdWUsIHRydWUsIHB1dFJlc3VsdCkpIHsKICAgICAgICAgICAgIGlmICghZXhlYy0+
aGFkRXhjZXB0aW9uKCkgJiYgb2xkTGVuZ3RoIDwgMHhGRkZGRkZGRnUpCiAgICAgICAgICAgICAg
ICAgc2V0TGVuZ3RoKGV4ZWMsIG9sZExlbmd0aCArIDEsIHRydWUpOwogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDlmMjczODJk
ZWJkNzE3NWI1MDljMWRmYTQ5NTFiOWViZDJjYjgyZTYuLmNjZjNiZWUzZGNhNGIzM2FkYTEzNmM0
MmRlNzAxY2Q2Y2JhNWE1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5k
ZXggMzU5YWU0N2E1MGJlN2VjMjgwMjg3MGM5Njc3NDg0NjQzMGUzNDRiMS4uNmRkZTRjN2RmZmNh
MzIzMzAwYzc4NTc4N2E1Mjc2MGFhYzUwNmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAgLTc5LDE4ICs3OSwxNiBAQCBib29sIEpT
QXJyYXlCdWZmZXI6OmdldE93blByb3BlcnR5U2xvdCgKICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LXZvaWQgSlNBcnJheUJ1ZmZlcjo6cHV0KAorYm9vbCBKU0FycmF5QnVmZmVyOjpwdXQoCiAgICAg
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJy
YXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGNlbGwpOwogICAg
IAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVMZW5n
dGgpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0
aW5nIHRvIHdyaXRlIHRvIGEgcmVhZC1vbmx5IGFycmF5IGJ1ZmZlciBwcm9wZXJ0eS4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ieXRlTGVuZ3RoKQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIGEgcmVhZC1vbmx5IGFycmF5
IGJ1ZmZlciBwcm9wZXJ0eS4iKTsKICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Fy
cmF5QnVmZmVyOjpkZWZpbmVPd25Qcm9wZXJ0eSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCBkNjM0ZDczNjNmZTRhNTA4YjhhYjk4MGNmYjA2
NWYzMTFhN2FhNmU4Li5mNzY3NTM4Mzc4NDRmMGE2ZmI1YWM3YzQ5Y2EyOWEzNDUzNDM3OTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCkBAIC01
Miw3ICs1Miw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCAzYmZjYWYxNTIxOTkyNWI5M2VkNzg3ZjQxNTAxYzli
NzdiYjU1YjExLi5kNGI1Y2MwYzQzNmI1ODFiZWIxNjk0OGNhNzMyZjAwNjFmNjIxYzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
Y3BwCkBAIC0xNjQsMTcgKzE2NCwxNSBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0KIAotdm9pZCBKU0FycmF5QnVmZmVy
Vmlldzo6cHV0KAorYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6cHV0KAogICAgIEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0FycmF5QnVmZmVyVmll
dyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpOwotICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZlcikgewotICAgICAg
ICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUg
dG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3BlcnR5LiIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0
ZW1wdGluZyB0byB3cml0ZSB0byByZWFkLW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7CiAg
ICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OmRlZmluZU93
blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmgKaW5kZXggNTIzYTIwMGZiYTJkNzcyYzJiNzNmMmQ0YzVmYzY1YzcxMmY2Yjli
Zi4uYjJjZjVhMmIxOTk5ZTVkN2VhMmU4YTQ4NzVlYmU0NzM4ZTA4OGI3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xNDcs
NyArMTQ3LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwog
ICAgIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggYjlkZDBhNDE3
ZDgwM2IwZTQ1ZGFlY2UyODg0NDVlZTEyZGY1NzgzNi4uYjMxZTU3OTZkMDY3MDE0OGQzZjlmOTFk
MDc2YTQwOTIyZDFkNmM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKQEAgLTEyOSwxNCArMTI5LDEyIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50
aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KIAogLy8gRUNNQSA4Ljcu
Mgotdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRp
dmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0VG9Qcmlt
aXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJz
IGluIHRoZSBwcm90b3R5cGUgY2hhaW4KICAgICBKU09iamVjdCogb2JqID0gc3ludGhlc2l6ZVBy
b3RvdHlwZShleGVjKTsKQEAgLTE0Nyw3ICsxNDUsNyBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZQogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTksMTkgKzE1NywxNSBAQCB2b2lkIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAg
ICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbFNl
dHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0
TW9kZSA6IE5vdFN0cmljdE1vZGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJp
Y3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CiAKLSAgICAgICAgICAgIGlm
IChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbEN1c3Rv
bVNldHRlcihleGVjLCBncywgYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3Qu
dGhpc1ZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRlcyAmIEN1
c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKIAogICAgICAgICAg
ICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IG9yIG9u
ZSBvZiBpdHMgCiAgICAgICAgICAgICAvLyBwcm90b3R5cGVzIGl0IHNob3VsZCBiZSByZXBsYWNl
ZCwgc28gYnJlYWsgaGVyZS4KQEAgLTE4NSwyMiArMTc5LDIyIEBAIHZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgcmV0dXJuOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFY
X0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KCp0aGlzLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHBy
b3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9Ci0gICAgCi0gICAgaWYgKHN5bnRoZXNp
emVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQ
cm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkK
LSAgICAgICAgcmV0dXJuOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHN5
bnRoZXNpemVQcm90b3R5cGUoZXhlYyktPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhv
bGVGb3JQcm90b3R5cGUoZXhlYywgKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlm
IChzaG91bGRUaHJvdykKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
SlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGNiYmYyNjFmYWYzMDQ5OWJlY2YzODExNDdm
Yzc4ZTQ5ODUwNGVmODYuLmFkYTgwMjk3Yjg0NzFmNmJiM2Q5MGU4NDI2Mjk0ZDk2ZDc0ZGZlNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI4Niwx
MSArMjg2LDExIEBAIGNsYXNzIEpTVmFsdWUgewogCiAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKIAotICAgIHZv
aWQgcHV0KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgdm9pZCBwdXRJbmxpbmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dFRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKLSAgICB2b2lkIHB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcHV0SW5s
aW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXRCeUlu
ZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIHRvVGhpcyhFeGVjU3RhdGUqLCBFQ01BTW9kZSkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IGNjN2NiOGRmNDc5MzVhZGExNDRlMWViZjg2ODEyOWZmNGY5YmRjNTcuLjMz
NzJlYTYwMjU1YWEzNzc5MmU0MzNlYThmY2IyMjY3ZDRiZmRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODAzLDQwICs4
MDMsMzYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4
ZWMsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3QKICAgICByZXR1cm4gZ2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgc3RhdGljX2Nhc3Q8ZG91YmxlPihwcm9wZXJ0eU5hbWUpKSk7
CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSBib29sIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkp
CisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKworICAgIHJldHVybiBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgdm9pZCBKU1ZhbHVlOjpwdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1
cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKICAg
ICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKICAgICBhdXRvIHB1dE1ldGhvZCA9IGNlbGwtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQ7Ci0gICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0g
SlNPYmplY3Q6OnB1dCkpIHsKLSAgICAgICAgSlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBKU09iamVjdDo6cHV0KSkKKyAgICAgICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgb3RoZXJTbG90ID0gc2xvdDsKLSAgICBwdXRNZXRo
b2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKKyAgICBib29s
IHJlc3VsdCA9IHB1dE1ldGhvZChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhl
clNsb3QpOwogICAgIHNsb3QgPSBvdGhlclNsb3Q7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
aW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2lubGluZSBi
b29sIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgaWYgKFVOTElL
RUxZKCFpc0NlbGwoKSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxs
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBpZiAoVU5M
SUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisKKyAgICByZXR1cm4gYXND
ZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDQ4ZjVhMWEyNjNkYjVmYTMyMjM2NWQyZDkzNGFj
YzhjMjc2NmU0NDEuLjZmMTU3MmY4M2Y4NmUxYjk5ZGU3NWI2Zjk5MjFmMTM5OGYyMTVlYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA0LDI1ICsxMDQs
MjMgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6Tm9u
ZTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2Jvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgewot
ICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoY2VsbC0+aXNTdHJp
bmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5w
dXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhl
YywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8
IGNlbGwtPmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwg
c2hvdWxkVGhyb3cpOwotICAgICAgICBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMs
IElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBlMGRkMTY0NGE2NzNlODc3Njg2Y2JjOGVk
MzVlYWM4NTM2MWQ3NjI3Li5lNDE0MzFmZDE4ZDI5ODRiZDg2MzIxMmYyMjg3NzhmMjg1M2M1NjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTQ1LDggKzE0NSw4
IEBAIGNsYXNzIEpTQ2VsbCB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dDsKICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoKSBjb25zdDsKICAgICBjb25z
dCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoVk0mKSBjb25zdDsKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA0NmJm
MWNiYmU5NjI0MTRiYmFmNzg0Y2RlZmIzMzliM2U0YTI4ZDVjLi45MGM2NGVkNDlkY2Q0MDk1MTdl
NDhmZDgyOTQyZTJjZWI1MTVkZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcApAQCAtMTExLDE4ICsxMTEsMTYgQEAgYm9vbCBKU0RhdGFWaWV3Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTRGF0YVZp
ZXc6OnB1dCgKK2Jvb2wgSlNEYXRhVmlldzo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAg
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlTGVuZ3RoCi0gICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZU9mZnNldCkgewotICAgICAgICByZWplY3QoZXhlYywg
c2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5
cGVkIGFycmF5IHByb3BlcnR5LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICB8
fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQpCisgICAg
ICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcg
dG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFycmF5IHByb3BlcnR5LiIpOwogCi0gICAgQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggZDY1ZmUyNzVmYWMzNGUx
MDU5ZTlmNzI1NWExOGM1ODA2ZmRhNDlmYy4uNzc0YjZkMTU4ZjdjNWZmZmM5MDk1OWEzNDQwZGY3
ZDFlMWFkZDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
aApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBKU0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKaW5kZXggZmI4NTA1OWMzYTJjMmU2Yzk4NWY5ZDIyYzVkNjlmMWJiZDFlNjcyNS4uOGJiNDlk
ZjY1MzZlNzA4ZWQxOTJlMDY3OGMzZDIwMzFkNDU0ZmNkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQyMSwxMyArNDIxLDEyIEBAIHZvaWQg
SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywKICAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgSlNGdW5j
dGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
RnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwot
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7Ci0gICAgICAg
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewogICAgICAgICAvLyBNYWtlIHN1cmUg
cHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVy
d3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0y
NjIgOC4xMi45LgpAQCAtNDM3LDIzICs0MzYsMjEgQEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90
b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0
aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4K
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKLSAgICAgICAg
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNo
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwogICAgIH0KICAgICBpZiAo
dGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpICYmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikpIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRy
aWdnZXIgdGhlIHByb3BlcnR5IHRvIGJlIHJlaWZpZWQsIGlmIHRoaXMgaXMgbm90IGFscmVhZHkg
dGhlIGNhc2UhCiAgICAgICAgIGJvb2wgb2theSA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4
ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2theSwgb2theSk7Ci0g
ICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3Qu
aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJ
Zk5lZWRlZChleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtNTIzLDcgKzUyMCw3IEBAIGJvb2wgSlNGdW5j
dGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hCiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZp
Z3VyYWJsZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJh
YmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSAmJiBk
ZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCBiZTkyMTAxNDE4MzljODE4OGZiNDE4MzBkOTI0YTdlZDI5NmQ4YTYy
Li5lODAxY2E1YjE3ZWFkMjRjYzkxYTQ0Y2NjYTZhMmY0MTdlZTA5ZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNjksNyArMTY5LDcgQEAgY2xh
c3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA4NTg5MzkyYWZjZGExZjViMDE5N2RjNDk1OWEyNDdl
MmRiMGZiYTNkLi40MDdhNzEyZjU4OGQwYWY4MjMyMGI1OThhMjI5N2YxZGNiMzg5NzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTI3NCwxMiArMjc0LDEyIEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBmcmllbmQgc3RydWN0IFR5
cGVkQXJyYXlDbGFzc0luZm9zOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CiAgICAgCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYjZjNmFlZDg4MTRhOWFiMmRjY2QyMGU2MTFlNjdjNGY5
ZDljYmE5MS4uYTgwYWM2MDE5Y2I5MGE2Y2I2ZmFhZjg4ZjMxNzg0MzNiNGQ4ZWI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMwMywxOCArMzAzLDE2IEBACiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci12b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpwdXQoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoCiAg
ICAgSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Kj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CkBAIC0zNjQsMTkgKzM2MiwxNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
dm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJbmRleCgKK2Jvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiAgICAgSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAg
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwotICAg
ICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoCi0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBz
bG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJv
cGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5z
ZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggNmQxNzYwODZlYWQz
OTMzZGMwMWNiNzcyZjdkM2ExNTk0MmZiZDBmNi4uZWZmZWJmYjQ1MTUxMTMxZmEwNTg1NDU0NTg1
YjM0ODBlNjU3OTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMzgsMTMgKzM4LDE1
IEBAIGJvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpc09iamVjdCkpOwogICAgIGJvb2wgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9D
b25zdFByb3BlcnR5ID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZUNvbnN0QXNzaWdubWVudEVycm9y
ID0gc2xvdC5pc0luaXRpYWxpemF0aW9uKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNo
cG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhy
b3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3BlcnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJv
cik7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFRvdWNo
V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhbHdh
eXNUaHJvd1doZW5Bc3NpZ25pbmdUb0NvbnN0UHJvcGVydHksIGlnbm9yZUNvbnN0QXNzaWdubWVu
dEVycm9yLCBwdXRSZXN1bHQpOworICAgIHJldHVybiBwdXRSZXN1bHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggNjQzZjA5NWRkMTk3OTllNWFhMzI2
MGIzOTgyYTlhOTNlNTZiZjUzMC4uOGQ0ZmQyZTA0NjE1MDBlODJkY2NkNjgwYjFhYzE2Y2YxZDZm
MDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc3ltYm9sVGFibGUoKS0+c2l6ZSgpOyB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
MTk4MmNiM2UzNTY5ZDM5Mzk3Y2EzNDc3YTZiNDlmMTkyMTM3ZjRlNy4uYTUwNDBjYmZjNGIzNDQ3
ZDZlZjY5OGM2MDViMzY2NDAzOWUyMjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjIwLDE2ICs2MjAsMTcgQEAgYm9vbCBK
U0dsb2JhbE9iamVjdDo6aGFzTGVnYWN5UHJvZmlsZXIoKSBjb25zdAogICAgIHJldHVybiBnbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c0xlZ2FjeVByb2ZpbGluZyh0aGlzKTsKIH0K
IAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCitib29sIEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAg
ICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCk7CiAg
ICAgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xUYWJs
ZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChz
eW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJy
b3JzLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9
CiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOWZjNjU5Nzk0
YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMy4uODNlZTM4MTNlOGFjOThhMzdhMjJjZWI5
NDdlZmMxODk0NTYyMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC00MDEsNyArNDAxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCmluZGV4IGU5OWJiYmE4OWQ5ZGQ2OTQzOTc3YzEyMjg1MjEwNDdkZDVkNzQyZTQu
LjgyOTAxYTc5NDRkYmE2NGExMjAxZGYxNTQ5NTZkNGZhNDIzNTQyYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAK
QEAgLTgwLDIxICs4MCwyMiBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xleGljYWxF
bnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KGNl
bGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkg
PT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKICAgICBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciA9IHNsb3QuaXNTdHJpY3RNb2RlKCkgfHwgdGhpc09iamVjdC0+aXNMZXhpY2FsU2Nv
cGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gZmFsc2U7Ci0gICAgaWYgKHN5
bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25s
eUVycm9ycykpCi0gICAgICAgIHJldHVybjsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwor
ICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdu
b3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSBfX3By
b3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0YW5k
YXJkIGV4dGVuc2lvbnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAgLy8g
ZXhwb3NlIGluIHRoZSBsZXhpY2FsRW52aXJvbm1lbnQgb2JqZWN0LgogICAgIEFTU0VSVCghdGhp
c09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICB0aGlzT2JqZWN0LT5w
dXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52bSgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0xleGljYWxFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBjNDBhZTg3Mzk1Y2MzMTIyZDY4MDMxZWMy
ZjNmY2Q1NDg3ZTBkOGM1Li41MTVlMTE3OWM2MTQ0MDI3ZjNkNjFmODYyNmJmMzQwYjhiM2JkYjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQg
OiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZjA4ZmUzZDAyYjk5YzgzM2I1NTE3M2ViNTQwODRj
MWUyMDQzNTBmYi4uMDRiMDhmNGQxODk1OTJiMzIxOGQ3MmU3MzRhYzcxZTllY2RmMThhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqCiAg
ICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOwogfQogCi12b2lkIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3Mg
YXJlIGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9u
ID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKICAgICBpZiAocmVzb2x1
dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkg
ewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmluZGV4IGY3ZWZhNjI2M2IyYjI3
NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMuLjQzNGJiN2MzZjhhMjFhZWI4ZDllZjU5YzIyYWZl
MWIwNDY1ZjMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgSlNNb2R1bGVFbnZp
cm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDBmZTlj
MzI2NmZhY2E4NzQ4MmUwMmExZmFjNmJhYTljMzMwOWRiODcuLjQwZGRhNzMzM2ZmNzIwYWRmNjA5
OGZmNDc3NTcyZjFlYjE4NmFlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTE1MSwxNyArMTUx
LDE5IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1l
c3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgogICAgIGlmIChzbG90LmlzU3Ry
aWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29s
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHNo
b3VsZFRocm93KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aAppbmRleCAzN2U2NDJlODc0YTQ2ZDEzZjQ2NWUxYTdkN2M3ZGU0MWNmN2IyN2QxLi44Y2ZlY2Zk
MGE0NWI1MDRlNmVhZTc0NzliNTNkMTE4ZjQ3MjY2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTQ2
LDggKzQ2LDggQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IDFjYzQ5Mzc1ZDRmMmNmMmVjN2UyZTAxYmJhN2JiOGE5MTQ3Zjg0ZmYuLjdiN2IzMjNlOThh
OTFhMTk4MmFhYzA1NjM2YzFhYTlkOTc4MWQyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTc4Niw3ICs3ODYsOCBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMs
IE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhl
Yyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
bW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVudHJ5LmxvY2FsTmFtZSwgbmFtZXNwYWNl
T2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJl
YWRPbmx5RXJyb3JzICovIHRydWUpOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVjdCwg
Lyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVy
cm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhl
YywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRp
b24udHlwZSkgewpAQCAtODE2LDggKzgxNywxMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQog
ICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CiAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxl
LmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQo
KTsKLSAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQotICAgICAgICAgICAgc3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwgLyog
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9y
cyAqLyB0cnVlKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3Vj
aFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21V
aWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhy
b3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVl
LCBwdXRSZXN1bHQpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5z
dGFudGlhdGlvbgpAQCAtODM3LDcgKzg0MCw4IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAg
ICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmls
aW5nRW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1bGVF
bnZpcm9ubWVudCk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNl
dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5h
bWUoKSwgZnVuY3Rpb24sIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyog
aWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgICAgICBib29sIHB1dFJlc3Vs
dCA9IGZhbHNlOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
bW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1l
KCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGln
bm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1dFJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAK
aW5kZXggYWY0NzM3ZTliMDJmNTcxMDMwNjVlZTdkOGU3YmEwNDBkZWMwZDJhYy4uY2I1MTVkODQ0
MjVhMmIzY2JhODk1NWM4ZTYyMTg0MWI5YzcyNDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKQEAgLTU4LDE0ICs1OCwxNiBAQCBib29s
IEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFu
T2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU05vdEFuT2JqZWN0OjpwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU05vdEFuT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wpCitib29sIEpTTm90
QW5PYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwg
SlNWYWx1ZSwgYm9vbCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNOb3RBbk9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggMGMyNmVj
OThiNmZiMTdhODFjZWM5NTlmNzFkNWFjYzQ0OGE0NTdlMi4uOWM0Nzk0M2UyMTFhZGVjYWNjYWY5
YWQyZjBlMzAxZWZlMmNiM2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTm90QW5PYmplY3QuaApAQCAtNjksOCArNjksOCBAQCBjbGFzcyBKU05vdEFuT2JqZWN0IGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRl
eCAyZjUyYTFmOTViYWEwMTY5NmU0MjI5Y2M5ZWJhZDQzMmY4NzFlNzM4Li40YzhlMTBmNjM4NDc5
ODQ2MWY4N2JkMzEzYWVmZTRjNzM3NTlkMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02NCw2ICs2NCw3IEBACiBTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSlNGaW5hbE9iamVjdCk7CiAKIGNvbnN0IGNoYXIqIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciA9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRv
IHJlYWRvbmx5IHByb3BlcnR5LiI7Citjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5
Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IgPSAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNz
IG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIjsKIAogY29uc3QgQ2xh
c3NJbmZvIEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTT2JqZWN0KSB9OwogCkBAIC0zNzksMTIgKzM4MCwxMiBAQCBib29sIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotdm9pZCBKU09iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXRJbmxpbmUoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHB1dElubGlu
ZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKIApAQCAtMzk3LDIzICszOTgsMjMgQEAgdm9pZCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hh
aW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09
IHRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdl
dERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsK
LSAgICAgICAgICAgICAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICAgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZXhlYywgdGhpcywgZ3MsIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogICAgICAgICAg
ICAgICAgIGlmICghc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAg
ICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nl
c3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRyaWJ1dGVzICYgQ3VzdG9t
QWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwogICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IpCiAgICAgICAgICAgICAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tQWNjZXNzb3Iob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oZ3Mu
YXNDZWxsKCkpLT5zZXR0ZXIoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKG9iaiwganNDYXN0PEN1c3RvbUdldHRlclNldHRl
cio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKQEAgLTQyMywxNiArNDI0LDEzIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmotPnN0
YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+Y2xhc3NJbmZv
KCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0
eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBvYmos
IHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBlbnRy
eSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwgb2JqLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBp
ZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iaik7Ci0gICAgICAgICAgICBwcm94eS0+
UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gcHJveHktPlByb3h5T2Jq
ZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAg
ICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTQ0MSwxOCArNDM5LDIxIEBAIHZvaWQgSlNP
YmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAgIAogICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZSkgfHwgb2JqID09IHRoaXMpOwotICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1
dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICBpZiAoIXB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgeworICAgICAg
ICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9v
bCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAg
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CkBAIC00
NjIsMTUgKzQ2MywxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsCiAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRVbmRl
Y2lkZWRGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgICAgIC8vIFJlbG9vcC4KLSAg
ICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnRJbnQzMkZvclZh
bHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwog
ICAgIH0KQEAgLTQ4MiwyMiArNDgxLDIwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbcHJvcGVydHlOYW1lXS5zZXQoZXhlYy0+dm0oKSwg
dGhpc09iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzog
ewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICAv
LyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSA9IHZhbHVl
LmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICh2YWx1ZUFzRG91YmxlICE9IHZhbHVlQXNEb3VibGUp
IHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhl
Yy0+dm0oKSk7CiAgICAgICAgICAgICAvLyBSZWxvb3AuCi0gICAgICAgICAgICBwdXRCeUluZGV4
KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBpZiAo
cHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCkBAIC01MDUsNyArNTAy
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtwcm9wZXJ0eU5hbWVdID0gdmFsdWVBc0RvdWJsZTsKICAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAgYnV0
dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgocHJvcGVydHlOYW1lICsgMSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE5vbkFy
cmF5V2l0aEFycmF5U3RvcmFnZToKQEAgLTUyNyw3ICs1MjQsNyBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsCiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAg
ICAgIAogICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKQEAgLTU0MiwyNiAr
NTM5LDI4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgCiAgICAgICAgIC8vIFVw
ZGF0ZSBsZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yIGFzIG5lY2Vzc2FyeS4KICAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA+PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKICAgICAgICAgICAgIGxlbmd0aCA9IHByb3BlcnR5TmFtZSArIDE7CiAgICAgICAgICAg
ICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVTbG90KSB7Ci0gICAg
ICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93LCBwdXRSZXN1bHQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVt
VmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xvdC5z
ZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgdGhpc09iamVj
dC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQog
CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGVXaGVu
QXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYgdm0sIEFycmF5U3RvcmFnZSogc3RvcmFnZSkK
QEAgLTEyNDMsNyArMTI0Miw3IEBAIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20oRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVjKTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSBnZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2Jq
ZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXR0ZXIpOwpA
QCAtMTI1NCwxMCArMTI1MywxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldAogICAgIGlmICgh
KGF0dHJpYnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJs
ZSh0cnVlKTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBKU09i
amVjdDo6cHV0U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0Ojpw
dXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXR0ZXIpOwpAQCAtMTI2
OCwyNyArMTI2NywyNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldAogICAgIGlmICghKGF0dHJp
YnV0ZXMgJiBEb250RW51bSkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVl
KTsKIAotICAgIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgZmFsc2UpOworICAgIHJldHVybiBkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAotdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCh2
YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZh
bHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwog
Ci0gICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFT
U0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wg
cmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBBU1NFUlQoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAgLTEyOTYsMTgg
KzEyOTMsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0
aWVzKCk7CiAgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
V2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90byk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVy
dHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICBib29s
IHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0s
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCiAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKIAogICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc1dpdGhQ
cm90b0NoZWNrKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEhhc1Byb3BlcnR5KE8sIFApIGZyb20g
U2VjdGlvbiA3LjMuMTAgb2YgdGhlIHNwZWMuCkBAIC0xODI3LDcgKzE4MjYsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3Qm
IHNsb3QsIEpTVmFsdWUgZwogICAgIHNsb3Quc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdCh0aGlzLCBh
dHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSwgb2Zmc2V0KTsK
IH0KIAotdm9pZCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkRGVzY3JpcHRvcikKK2Jvb2wgSlNP
YmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlF
bnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIG1hcCA9IG1fYnV0dGVyZmx5LmdldCh0aGlzKS0+YXJyYXlTdG9yYWdl
KCktPm1fc3BhcnNlTWFwLmdldCgpOwpAQCAtMTgzOCw3ICsxODM3LDcgQEAgdm9pZCBKU09iamVj
dDo6cHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5
KiBlbnRyeUluTWEKICAgICAgICAgZWxzZSBpZiAob2xkRGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKQogICAgICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICBlbnRyeUluTWFwLT5hdHRyaWJ1dGVzID0gZGVzY3JpcHRvci5hdHRy
aWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQob2xkRGVzY3JpcHRvcikgJiB+QWNjZXNzb3I7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpAQCAtMTg2MSwxMSArMTg2MCwxMiBAQCB2
b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJz
ZUFycmF5RW50cnkqIGVudHJ5SW5NYQogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwgbWFw
LCBhY2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5SZWFkT25seTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBBU1NF
UlQoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpOwogICAgIGVudHJ5SW5NYXAtPmF0
dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNj
cmlwdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRGVmaW5lZCBpbiBFUzUuMSA4LjEy
LjkKQEAgLTE5NTAsNyArMTk1MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bkluZGV4ZWRQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBQCiAgICAgICAg
IGlmIChjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSAhPSBkZXNjcmlwdG9yLmlzRGF0YURlc2Ny
aXB0b3IoKSkgewogICAgICAgICAgICAgLy8gOS5hLiBSZWplY3QsIGlmIHRoZSBbW0NvbmZpZ3Vy
YWJsZV1dIGZpZWxkIG9mIGN1cnJlbnQgaXMgZmFsc2UuCiAgICAgICAgICAgICBpZiAoIWN1cnJl
bnQuY29uZmlndXJhYmxlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9y
IGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZXhlYywgdGhyb3dFeGNlcHRpb24sIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VB
Y2Nlc3NNZWNoYW5pc21FcnJvcik7CiAgICAgICAgICAgICAvLyA5LmIuIElmIElzRGF0YURlc2Ny
aXB0b3IoY3VycmVudCkgaXMgdHJ1ZSwgdGhlbiBjb252ZXJ0IHRoZSBwcm9wZXJ0eSBuYW1lZCBQ
IG9mIG9iamVjdCBPIGZyb20gYQogICAgICAgICAgICAgLy8gZGF0YSBwcm9wZXJ0eSB0byBhbiBh
Y2Nlc3NvciBwcm9wZXJ0eS4gUHJlc2VydmUgdGhlIGV4aXN0aW5nIHZhbHVlcyBvZiB0aGUgY29u
dmVydGVkIHByb3BlcnR5J3MKICAgICAgICAgICAgIC8vIFtbQ29uZmlndXJhYmxlXV0gYW5kIFtb
RW51bWVyYWJsZV1dIGF0dHJpYnV0ZXMgYW5kIHNldCB0aGUgcmVzdCBvZiB0aGUgcHJvcGVydHkn
cyBhdHRyaWJ1dGVzIHRvCkBAIC0yMDA0LDcgKzIwMDQsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWFs
bG9jYXRlU3BhcnNlSW5kZXhNYXAoKQogICAgICAgICBhcnJheVN0b3JhZ2UtPm1fc3BhcnNlTWFw
LmNsZWFyKCk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
dW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNPYmpl
Y3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGZvciAoSlNPYmplY3Qq
IGN1cnJlbnQgPSB0aGlzOyA7KSB7CiAgICAgICAgIC8vIFRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2
aW9yIHdpdGggcmVzcGVjdCB0byBwcm90b3R5cGVzIGFzIEpTT2JqZWN0OjpwdXQoKS4gSXQgb25s
eQpAQCAtMjAxNiwxNCArMjAxNiwxNCBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgICAg
ICBpZiAoc3RvcmFnZSAmJiBzdG9yYWdlLT5tX3NwYXJzZU1hcCkgewogICAgICAgICAgICAgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXRlciA9IHN0b3JhZ2UtPm1fc3BhcnNlTWFwLT5m
aW5kKGkpOwogICAgICAgICAgICAgaWYgKGl0ZXIgIT0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPm5v
dEZvdW5kKCkgJiYgKGl0ZXItPnZhbHVlLmF0dHJpYnV0ZXMgJiAoQWNjZXNzb3IgfCBSZWFkT25s
eSkpKSB7Ci0gICAgICAgICAgICAgICAgaXRlci0+dmFsdWUucHV0KGV4ZWMsIHRoaXNWYWx1ZSwg
c3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAg
ICAgICAgICAgcHV0UmVzdWx0ID0gaXRlci0+dmFsdWUucHV0KGV4ZWMsIHRoaXNWYWx1ZSwgc3Rv
cmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY3VycmVudC0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkgewogICAgICAgICAgICAgUHJv
eHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY3VycmVudCk7Ci0gICAgICAg
ICAgICBwcm94eS0+cHV0QnlJbmRleENvbW1vbihleGVjLCB0aGlzVmFsdWUsIGksIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgICAgICAgICBwdXRSZXN1bHQgPSBwcm94eS0+cHV0QnlJbmRleENv
bW1vbihleGVjLCB0aGlzVmFsdWUsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIwMzUsMTcgKzIwMzUsMTcg
QEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICB9CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCkKIHsK
ICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlKCk7CiAgICAgaWYgKHByb3Rv
dHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0
dXJuIGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRl
eE9uSG9sZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwor
ICAgIHJldHVybiBhc09iamVjdChwcm90b3R5cGVWYWx1ZSktPmF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRo
cm93LCBwdXRSZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFw
ZT4KLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCitib29s
IEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VS
VCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7
CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwpAQCAtMjA1OSwxNiArMjA1
OSwxNSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91
dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgCiAgICAgaWYgKGkgPiBNQVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKLSAgICAgICAgfHwg
KGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWAotICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91
Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihidXR0ZXJmbHkpKSkK
KyAgICAgICAgfHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCAmJiAhaXNEZW5zZUVub3Vn
aEZvclZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQog
ICAgICAgICB8fCBpbmRleElzU3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGks
IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpKSB7CiAgICAgICAgIEFTU0VSVChpIDw9IE1BWF9B
UlJBWV9JTkRFWCk7CiAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZVNsb3codm0pOwogICAgICAg
ICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsK
LSAgICAgICAgbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOworICAg
ICAgICBib29sIHJlc3VsdCA9IG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIGZh
bHNlKTsKICAgICAgICAgQVNTRVJUKGkgPj0gYXJyYXlTdG9yYWdlKCktPmxlbmd0aCgpKTsKICAg
ICAgICAgYXJyYXlTdG9yYWdlKCktPnNldExlbmd0aChpICsgMSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBlbnN1cmVMZW5ndGgodm0sIGkg
KyAxKTsKQEAgLTIwNzksMzEgKzIwNzgsMzIgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW4KICAg
ICBjYXNlIEludDMyU2hhcGU6CiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0ludDMyKCkpOwogICAg
ICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldLnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIodmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IAogICAgIGNhc2UgRG91YmxlU2hhcGU6IHsKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzTnVtYmVy
KCkpOwogICAgICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSA9IHZhbHVlLmFzTnVtYmVyKCk7CiAg
ICAgICAgIEFTU0VSVCh2YWx1ZUFzRG91YmxlID09IHZhbHVlQXNEb3VibGUpOwogICAgICAgICBi
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IHZhbHVlQXNEb3VibGU7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
Q29udGlndW91c1NoYXBlOgogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5zZXQo
dm0sIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogfQogCiAvLyBFeHBsaWNpdCBpbnN0YW50aWF0aW9ucyBuZWVkZWQgYnkg
SlNBcnJheS5jcHAuCi10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oRXhlY1N0YXRlKiwgdW5zaWdu
ZWQsIEpTVmFsdWUpOwotdGVtcGxhdGUgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihFeGVjU3RhdGUqLCB1bnNp
Z25lZCwgSlNWYWx1ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihFeGVjU3RhdGUq
LCB1bnNpZ25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oRXhlY1N0YXRl
KiwgdW5zaWduZWQsIEpTVmFsdWUpOwordGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihF
eGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBz
dG9yYWdlKQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKIApAQCAtMjEzMCwxMiArMjEzMCwxMSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMs
IHVucwogICAgICAgICAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgICAgICAgICAg
c3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICAr
K3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvLCBvciBjYW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3BlcnR5IC0gYWxsb2Nh
dGUgYSBzcGFyc2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KICAgICAgICAgbWFwID0gYWxsb2NhdGVT
cGFyc2VJbmRleE1hcChleGVjLT52bSgpKTsKLSAgICAgICAgbWFwLT5wdXRFbnRyeShleGVjLCB0
aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAg
ICAgfQogCiAgICAgLy8gVXBkYXRlIG1fbGVuZ3RoIGlmIG5lY2Vzc2FyeS4KQEAgLTIxNDUsNyAr
MjE0NCw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAgIGlmIChtYXAtPmxlbmd0
aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAg
IGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9
IGkgKyAxOwogICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3RoKTsKQEAgLTIxNTQsMTAg
KzIxNTMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0
aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVucwogICAgIC8vIFdlIGFyZSBjdXJyZW50
bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8gYmUgZG9pbmcg
c28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1hcCBpZiBTcGFy
c2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3IgaWYgYWxsb2Nh
dGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNwYXJzZU1vZGUo
KSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8
ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKSB7Ci0gICAgICAgIG1h
cC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VFbm91
Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0b3JM
ZW5ndGgoZXhlYy0+dm0oKSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnko
ZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0
b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JMZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVj
dG9yLgogICAgIHN0b3JhZ2UgPSBhcnJheVN0b3JhZ2UoKTsKQEAgLTIxNzUsOSArMjE3MiwxMCBA
QCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3Rv
cmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVucwogICAgIGlmICghdmFsdWVTbG90KQogICAgICAgICAr
K3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgdmFsdWVTbG90LnNldCh2bSwgdGhp
cywgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTIx
ODcsMjUgKzIxODUsMjIgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUKICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAg
ICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkgewotICAgICAgICAgICAgcHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCisgICAgICAgICAgICByZXR1
cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAg
ICAgICAgICAgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LAogICAgICAgICAgICAgICAgIGVu
c3VyZUFycmF5U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSkp
OwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluZGV4SXNTdWZm
aWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgMCkgfHwgaSA+PSBNSU5fU1BBUlNF
X0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwotICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cnVjdHVyZSh2bSktPm5lZWRzU2xv
d1B1dEluZGV4aW5nKCkpIHsKICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGluZGV4aW5nIHR5
cGUgdG8gdGhlIFNsb3dQdXRBcnJheVN0b3JhZ2UgYW5kIHJldHJ5LgogICAgICAgICAgICAgY3Jl
YXRlQXJyYXlTdG9yYWdlKHZtLCBpICsgMSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKDAsIDAsIGkgKyAx
KSk7Ci0gICAgICAgICAgICBwdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGNyZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCh2bSwgaSwgdmFsdWUpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6IHsKQEAgLTIyMTMsMzggKzIyMDgsMzMg
QEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAg
ICAKLSAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oZXhlYywg
aSwgdmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAK
LSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgcHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPERvdWJsZVNoYXBlPihleGVjLCBp
LCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9ET1VCTEVfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKICAgICAgICAg
Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBl
PihleGVjLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9D
T05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICByZXR1cm4gcHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzPENvbnRpZ3VvdXNTaGFwZT4oZXhlYywgaSwg
dmFsdWUpOwogICAgICAgICAKICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6CiAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIC8v
IE5vIG93biBwcm9wZXJ0eSBwcmVzZW50IGluIHRoZSB2ZWN0b3IsIGJ1dCB0aGVyZSBtaWdodCBi
ZSBpbiB0aGUgc3BhcnNlIG1hcCEKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0g
YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpOwotICAgICAgICBpZiAoIShtYXAgJiYg
bWFwLT5jb250YWlucyhpKSkgJiYgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShl
eGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICBpZiAoIShtYXAgJiYgbWFwLT5jb250
YWlucyhpKSkgJiYgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBpLCB2
YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAKICAgICBjYXNlIE5vbkFycmF5V2l0
aEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAg
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgaSwgdmFs
dWUsIHNob3VsZFRocm93LCBhcnJheVN0b3JhZ2UoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhl
YywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBhcnJheVN0b3JhZ2UoKSk7CiAgICAgICAgIAogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2Rl
IG1vZGUsIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKQEAgLTI0MTgsMTUgKzI0MDgsMTUgQEAgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpLCBKU1YKICAgICB9CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEdldHRlclNl
dHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAwLCBuYW1lLnN0cmluZygpLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKICAg
ICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsKLSAgICBw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCBuYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7
CisgICAgcmV0dXJuIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29y
LCBhdHRyaWJ1dGVzKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwogICAgIGlmICghbmFtZSkKQEAg
LTI0MzQsNyArMjQyNCw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgQVNTRVJUKG5h
bWUpOwogCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgZnVuY3Rpb25MZW5ndGgsIG5hbWUsIG5hdGl2ZUZ1bmN0aW9uLCBpbnRy
aW5zaWMpOwotICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmli
dXRlcyk7CisgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwg
YXR0cmlidXRlcyk7CiB9CiAKIEpTRnVuY3Rpb24qIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9w
ZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC0yNzQ1LDEyICsyNzM1LDExIEBAIHN0YXRp
YyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRl
eChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKLSAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgu
dmFsdWUoKSwgdmFsdWUpOworICAgIHJldHVybiBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CiB9CiAKIGNsYXNzIERlZmluZU93blByb3BlcnR5U2NvcGUgewpAQCAt
MjgzMSw3ICsyODIwLDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGUKICAgICBpZiAoZGVzY3Jp
cHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVudC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsK
ICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KSkpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hh
bmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMjg4Myw3ICsyODcyLDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGUK
ICAgICAgICAgfQogICAgICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nl
c3NvcikgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4g
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKKyAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZDYwNjI3OGI3YTY5Y2I0Nzg2MzhiMTcxODMx
Y2YzYTdjYzgyMzI2YS4uYWJiYTg5ZTY4MWE0ZDJiNDBkMWE5ZDNhMTEzMDk2NDEyNTliZjVjNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC03MSw2ICs3MSw3
IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIAogSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYpOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yOworZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciog
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yOwogCiBDT01Q
SUxFX0FTU0VSVChOb25lIDwgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSwgTm9uZV9pc19iZWxvd19G
aXJzdEludGVybmFsQXR0cmlidXRlKTsKIENPTVBJTEVfQVNTRVJUKFJlYWRPbmx5IDwgRmlyc3RJ
bnRlcm5hbEF0dHJpYnV0ZSwgUmVhZE9ubHlfaXNfYmVsb3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0
ZSk7CkBAIC0xNTgsMTggKzE1OSwxOCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT52ZWN0b3JMZW5ndGgoKTsK
ICAgICB9CiAgICAgCi0gICAgc3RhdGljIHZvaWQgcHV0SW5saW5lKEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgcHV0SW5saW5lKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5SW5kZXhJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCisgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5SW5kZXhJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlj
a2x5KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseShleGVjLT52
bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKKyAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAg
ICAgICAgIAogICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHV0RGlyZWN0KiBtZXRob2Rz
OgpAQCAtMTkxLDcgKzE5Miw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgfQogCiAgICAgLy8gQSBub24tdGhyb3dpbmcgdmVyc2lvbiBvZiBwdXREaXJlY3QgYW5kIHB1
dERpcmVjdEluZGV4LgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TWF5QmVJ
bmRleChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUpOwogICAgICAgICAKICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKCkgY29uc3QK
ICAgICB7CkBAIC00ODQsMTUgKzQ4NSwxNSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIC8vICAtIGFjY2Vzc29ycyBhcmUgbm90IGNhbGxlZC4KICAgICAvLyAgLSBhdHRy
aWJ1dGVzIHdpbGwgYmUgcmVzcGVjdGVkIChhZnRlciB0aGUgY2FsbCB0aGUgcHJvcGVydHkgd2ls
bCBleGlzdCB3aXRoIHRoZSBnaXZlbiBhdHRyaWJ1dGVzKQogICAgIC8vICAtIHRoZSBwcm9wZXJ0
eSBuYW1lIGlzIGFzc3VtZWQgdG8gbm90IGJlIGFuIGluZGV4LgotICAgIHZvaWQgcHV0RGlyZWN0
KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0g
ICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CisgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHZvaWQgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQgcHV0RGly
ZWN0QWNjZXNzb3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
KyAgICBib29sIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0RGlyZWN0QWNjZXNzb3Io
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgIHZvaWQg
cHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7Ci0gICAgdm9pZCBwdXRTZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBib29sIHB1dEdldHRlcihFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJv
b2wgcHV0U2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpA
QCAtNjE4LDggKzYxOSw4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAg
dm9pZCBwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFs
dWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KHZtLCB0aGlzLCB2YWx1ZSk7IH0K
ICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9j
YXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBJZGVudGlmaWVyLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNp
Z25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVJ
bnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50aWZpZXIsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUm
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0
aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKQEAgLTY5MCw3ICs2OTEsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIC8vIGlzIGVxdWl2YWxlbnQgdG86CiAgICAgLy8KICAgICAvLyBmb28tPmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoLi4uKTsKLSAgICBib29sIGF0dGVtcHRUb0ludGVyY2Vw
dFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFs
dWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgYm9vbCBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgICAgIAogICAgIC8v
IFJldHVybnMgMCBpZiBpbnQzMiBzdG9yYWdlIGNhbm5vdCBiZSBjcmVhdGVkIC0gZWl0aGVyIGJl
Y2F1c2UKICAgICAvLyBpbmRleGluZyBzaG91bGQgYmUgc3BhcnNlLCB3ZSdyZSBoYXZpbmcgYSBi
YWQgdGltZSwgb3IgYmVjYXVzZQpAQCAtODM2LDggKzgzNyw4IEBAIGNsYXNzIEpTT2JqZWN0IDog
cHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCB0aHJv
d0V4Y2VwdGlvbik7CiAKICAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4K
LSAgICB2b2lkIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwotICAgIHZvaWQgcHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3Jh
Z2UqKTsKKyAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlcyhFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgIGJv
b2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJh
eVN0b3JhZ2UqKTsKIAogICAgIGJvb2wgaW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mLCB1bnNpZ25l
ZCBuZXdMZW5ndGgpOwogICAgIHZvaWQgZGVhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKCk7CkBAIC04
NDYsNyArODQ3LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
CiAgICAgdm9pZCBub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29ycyhWTSYpOwogICAgICAg
ICAKLSAgICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRl
KiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wg
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAg
ICAgCiAgICAgLy8gQ2FsbCB0aGlzIGlmIHlvdSB3YW50IHNldEluZGV4UXVpY2tseSB0byBzdWNj
ZWVkIGFuZCB5b3UncmUgc3VyZSB0aGF0CiAgICAgLy8gdGhlIGFycmF5IGlzIGNvbnRpZ3VvdXMu
CkBAIC04OTEsNyArODkyLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIGNhblBlcmZvcm1GYXN0UHV0
SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgVk0mLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHZvaWQgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIE5FVkVSX0lOTElORSBib29sIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIGJvb2wgZ2V0Tm9uSW5k
ZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlJiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTkwMCw5ICs5MDEsOSBAQCBjbGFzcyBKU09i
amVjdCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgSGFz
aFRhYmxlVmFsdWUqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUpIGNvbnN0Owog
ICAgICAgICAKLSAgICB2b2lkIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJz
ZUFycmF5RW50cnkqLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIG9sZCk7CisgICAgYm9vbCBwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqLCBTcGFy
c2VBcnJheUVudHJ5KiwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgUHJvcGVydHlEZXNjcmlw
dG9yJiBvbGQpOwogICAgICAgICAKLSAgICB2b2lkIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5n
dGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKKyAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAg
ICBib29sIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSwgQXJyYXlTdG9yYWdlKik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1
dERpcmVjdEluZGV4TW9kZSk7CiAgICAgICAgIApAQCAtMTQyMywxOSArMTQyNCwxOSBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYQogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNl
dHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5p
c0N1c3RvbUdldHRlclNldHRlcigpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsK
LSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcywgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAg
QVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKLSAgICBwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blBy
b3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKIGlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4
IGRiMTcwZjI5OGNiMjU1OWM3ZTM3YTEyZWUxMTAyYzAwOTBjNTA4YTAuLjlkNTMzNDFhMTQ4MmMy
ZTk2NmMzMjQwYzFiMzAyZGVlMjgwZTYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC01Myw3ICs1Myw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIFByCiB9CiAKIC8vIEVDTUEgOC42LjIuMgotQUxXQVlTX0lOTElORSB2b2lkIEpT
T2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwpAQCAtNjIsMTggKzYyLDE5
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgCiAgICAgLy8gVHJ5IGluZGV4ZWQgcHV0
IGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgc2luY2UgbG9hZHMgb24g
cHJvcGVydHkgbmFtZXMgdGhhdCBhcHBlYXIgbGlrZQogICAgIC8vIHZhbGlkIGluZGljZXMgd2ls
bCBuZXZlciBsb29rIGluIHRoZSBuYW1lZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAg
cmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1G
YXN0UHV0SW5saW5lKGV4ZWMsIHZtLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIEFTU0VSVCgh
dGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9y
ZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkpOwotICAgICAgICBpZiAoIXRoaXNPYmplY3Qt
PnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90KQotICAgICAgICAgICAgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpc09iamVjdC0+cHV0SW5s
aW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnB1dElubGluZVNsb3coZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcAppbmRleCA5MzdjMDg4NzQ1ZjhiYjdjZmZiZGY3YWUxOTNjNTJiZTVjZjdi
N2NmLi42MDgzNTI5MzUwOWVlMGRlMDcxNjhhYmU3ZjdhMmVhYzY0MWVhOGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAtNzgsMTYgKzc4LDE2IEBAIGJv
b2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2Jq
ZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU1By
b3h5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNQ
cm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdC0+
dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2Jq
ZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZv
aWQgSlNQcm94eTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9v
bCBKU1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRo
aXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTUHJveHk6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IDJiZGNk
MWI3MmFiY2ViYTg3ZmZiMDZlNzRmZTE2YjYzMjczZDgxMjQuLjU3MDkyMWJlMThjODE2N2Y5Yzdm
ZDU2NjZhZmI4MGI5YmJhZWZlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmgKQEAgLTc2LDggKzc2LDggQEAgY2xhc3MgSlNQcm94eSA6IHB1YmxpYyBKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05h
bWUoY29uc3QgSlNPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMzY4Y2VkY2I4MGIzYTc0
YmI1YWMyMzZmNzZhYmFiODFlMjk1OTBiZi4uZDQ0Y2RlMDM2NGM5N2Q4ZGY1ZGJjZDkyYzM4OGRk
MWE0ZjU3YzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIGVudW0gY2xhc3MgU3ltYm9s
VGFibGVQdXRNb2RlIHsKIHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVB1
dE1vZGUsIHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsCi0gICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdu
b3JlUmVhZE9ubHlFcnJvcnMsIFdhdGNocG9pbnRTZXQqJiBzZXQpCisgICAgYm9vbCBzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIFdhdGNocG9pbnRT
ZXQqJiBzZXQsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAKQEAgLTE3
MCw2ICsxNzAsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICAgICAgaWYgKGZh
c3RFbnRyeS5pc1JlYWRPbmx5KCkgJiYgIWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAg
ICAgICBpZiAoc2hvdWxkVGhyb3dSZWFkT25seUVycm9yKQogICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Cisg
ICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKQEAgLTE4OCwxNyArMTg5LDE4IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0KAogICAgIC8vIHRoZSByaWdodCBmb3IgYmFycmllcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2Vy
IEdDLiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQgVk0KICAgICAvLyBsb2NrcyB3aGlsZSBHQydp
bmcuCiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOworICAgIHB1dFJlc3VsdCA9IHRy
dWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxl
T2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0
KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCi0gICAgYm9vbCBzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMpCisgICAgYm9vbCBz
aG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIGJvb2wm
IHB1dFJlc3VsdCkKIHsKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQdXQ8
U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFibGVQ
dXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRob3V0QXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAg
ICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMDcsMTEgKzIwOSwxMSBAQCBpbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCgKIHRlbXBsYXRlPHR5cGVuYW1l
IFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0SW52YWxp
ZGF0ZVdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwK
LSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycykKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFk
T25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9
IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQg
PSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1
bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVz
PihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsK
ICAgICBpZiAoc2V0KQogICAgICAgICBzZXQtPmludmFsaWRhdGUoVmFyaWFibGVXcml0ZUZpcmVE
ZXRhaWwob2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsgLy8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3
ZSBoYWQgZm91bmQgdGhpcyBzdGF0aWNhbGx5LCB3ZSB3b3VsZCBoYXZlIGludmFsaWRhdGVkIGl0
LgogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMjAsMTIgKzIyMiwxMiBAQCBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUg
U3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlc1RvdWNoV2F0Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAotICAgIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQq
IHNldCA9IG51bGxwdHI7CiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBmYWxz
ZTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gdHJ1ZTsKLSAgICBib29sIHJlc3Vs
dCA9IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aEF0dHJpYnV0ZXM+KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3Vs
dCA9IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aEF0dHJpYnV0ZXM+KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAg
IGlmIChzZXQpCiAgICAgICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaChzZXQsIG9i
amVjdCwgcHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaAppbmRleCAwYmY5ZDJlOWI1MGZmMjIzNDY0NjY0NjFkODU5YmU4
MzgyNTk4YWFmLi42NzMyMzk0NWM1OTAxNmI3MzE3Njg1NmYwM2NjNTc0MDJjYWEwYWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjg0LDI3ICsyODQsNDAgQEAg
aW5saW5lIGJvb2wgZ2V0U3RhdGljVmFsdWVTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aFRhYmxlJiB0YWJsZSwgVGhpc0ltcCoKIC8vICdiYXNlJyBtZWFucyB0aGUgb2JqZWN0IGhvbGRp
bmcgdGhlIHByb3BlcnR5IChwb3NzaWJseSBpbiB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHRoZSBv
YmplY3QgcHV0IHdhcyBjYWxsZWQgb24pLgogLy8gJ3RoaXNWYWx1ZScgaXMgdGhlIG9iamVjdCB0
aGF0IHB1dCBpcyBiZWluZyBhcHBsaWVkIHRvIChpbiB0aGUgY2FzZSBvZiBhIHByb3h5LCB0aGUg
cHJveHkgdGFyZ2V0KS4KIC8vICdzbG90LnRoaXNWYWx1ZSgpJyBpcyB0aGUgb2JqZWN0IHRoZSBw
dXQgd2FzIG9yaWdpbmFsbHkgcGVyZm9ybWVkIG9uIChpbiB0aGUgY2FzZSBvZiBhIHByb3h5LCB0
aGUgcHJveHkgaXRzZWxmKS4KLWlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgSlNPYmplY3QqIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGlu
T3JGdW5jdGlvbikgewogICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9u
bHkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFu
IG92ZXJyaWRlIHByb3BlcnR5LgogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSkpCiAgICAgICAgICAgICAgICAg
dGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwot
ICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7Ci0gICAgfSBlbHNlIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQWNjZXNz
b3IpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQWNjZXNzb3IpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
UmVhZE9ubHkpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIShl
bnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CisgICAgICAgIGJvb2wgaXNBY2Nlc3Nv
ciA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvcjsKICAgICAgICAgSlNWYWx1
ZSB1cGRhdGVUaGlzVmFsdWUgPSBlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ig
PyBzbG90LnRoaXNWYWx1ZSgpIDogSlNWYWx1ZShiYXNlKTsKLSAgICAgICAgZW50cnktPnByb3Bl
cnR5UHV0dGVyKCkoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHVwZGF0ZVRoaXNWYWx1ZSksIEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSkpOwotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEN1
c3RvbUFjY2Vzc29yKQorICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIoZXhl
YywgZW50cnktPnByb3BlcnR5UHV0dGVyKCksIGlzQWNjZXNzb3IsIHVwZGF0ZVRoaXNWYWx1ZSwg
dmFsdWUpOworICAgICAgICBpZiAoaXNBY2Nlc3NvcikKICAgICAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tQWNjZXNzb3IoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1
dHRlcigpKTsKLSAgICB9IGVsc2UgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAvKioKQEAgLTMxMiwxNCArMzI1LDE0IEBA
IGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlVmFs
dWUqIGVudHJ5LCBKU09iamVjdCogYmFzCiAgKiBJdCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9y
IHRoZSBwcm9wZXJ0eSB0byBiZSBzZXQuICBJZiBhbiBlbnRyeQogICogaXMgZm91bmQgaXQgc2V0
cyB0aGUgdmFsdWUgYW5kIHJldHVybnMgdHJ1ZSwgZWxzZSBpdCByZXR1cm5zIGZhbHNlLgogICov
Ci1pbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxl
JiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgbG9va3VwUHV0KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2Us
IEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRy
eSA9IHRhYmxlLmVudHJ5KHByb3BlcnR5TmFtZSk7CiAKICAgICBpZiAoIWVudHJ5KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBwdXRFbnRyeShleGVjLCBlbnRyeSwgYmFzZSwgYmFzZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcHV0UmVzdWx0ID0gcHV0RW50cnkoZXhl
YywgZW50cnksIGJhc2UsIGJhc2UsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKaW5kZXggMDE2YTI2ODZlYWJkYzI1YjhmNzUyOWM2ZGRjNjYyNmQ5NDQ3ZjI5Ni4u
ZTBhYWY2YTY5NjJkMzAyNmRlZGViMjdmN2FjMmY3ZDdlMDBlZmRlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtMzQ1LDEyICszNDUsMTIg
QEAgYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZv
cm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci12b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1
bHRQdXQpCitib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+
aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgp
KSkpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVl
LmlzTnVsbCgpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2Jq
ZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM2Nywx
MiArMzY3LDEwIEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5
cGU7CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2Fs
bERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3Nl
dCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAg
ICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQ
dXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsK
QEAgLTM4MSw2MiArMzc5LDYxIEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1l
bnRzLmFwcGVuZCh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhl
Yywgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9v
bGVhbihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3Jp
cHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYg
IWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhl
YywgZGVzY3JpcHRvci52YWx1ZSgpLCBwdXRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9u
IGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQn
IHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkg
b24gdGhlICd0YXJnZXQnLiIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3Nl
dCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0
IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UuIikpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAg
ICAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1E
ZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxK
U09iamVjdCo+KHRoaXNPYmplY3QtPnRhcmdldCgpKTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RU
YWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVy
Zm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJm
b3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQp
OwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21t
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhl
YywgcHJvcGVydHlOYW1lKTsgCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0
UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgp
OwogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IHNob3VsZFRocm93OwogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlzU3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJl
c2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdl
dC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZh
bHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQo
dGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAg
IHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJm
b3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRo
aXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJv
eHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsK
ICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwp
OwotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5w
dXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVy
Zm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCBiNjhjYWM0NGJlZDkwODk2OGI2ZGZiMzRlMzkwMDEx
M2RhZDQxYzQyLi41NTU5NzhjZjVjODIyZTk1NWE1NzkyZmYyNDhhY2JjY2QyNmM1NTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAgLTYyLDkgKzYy
LDkgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
SlNPYmplY3QqIHRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1
ZSBoYW5kbGVyKCkgeyByZXR1cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgdm9pZCBwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3QoVk0mLCBTdHJ1
Y3R1cmUqKTsKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5j
dGlvbj4KICAgICBib29sIHBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBE
ZWZhdWx0RGVsZXRlRnVuY3Rpb24pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVm
YXVsdFB1dEZ1bmN0aW9uPgotICAgIHZvaWQgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVl
IHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVs
dFB1dEZ1bmN0aW9uKTsKKyAgICBib29sIHBlcmZvcm1QdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBw
dXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQ
dXRGdW5jdGlvbik7CiAgICAgYm9vbCBwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRl
Kik7CiAgICAgYm9vbCBwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwogICAgIGJvb2wg
cGVyZm9ybURlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IDkwYzU3YmU5MGY4YTFh
NGRiZDZlNDMzNTBiNWJjNjdmZTM2NDFhY2MuLjEzYWQyZDM3YWU4YTEwZGVhOWZjNzlhZjRmOTMx
YzRkMmVkMjU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1
dFByb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFBy
b3BlcnR5U2xvdC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFB1dFByb3BlcnR5U2xvdCB7CiBw
dWJsaWM6CiAgICAgZW51bSBUeXBlIHsgVW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3
UHJvcGVydHksIFNldHRlclByb3BlcnR5LCBDdXN0b21WYWx1ZSwgQ3VzdG9tQWNjZXNzb3IgfTsK
ICAgICBlbnVtIENvbnRleHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwg
fTsKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKKyAgICB0eXBlZGVmIGJv
b2wgKCpQdXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdChKU1ZhbHVlIHRo
aXNWYWx1ZSwgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZSwgQ29udGV4dCBjb250ZXh0ID0gVW5r
bm93bkNvbnRleHQsIGJvb2wgaXNJbml0aWFsaXphdGlvbiA9IGZhbHNlKQogICAgICAgICA6IG1f
dHlwZShVbmNhY2hhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAppbmRleCA4OTRhYWZhNDY5NjhlNjAzMmFmZDlkZDhiYmQ3NWIyOTgxNzkw
NzlkLi5jNmQ1N2IzMTcwOTQ5ZWRhNGIzOTRjOTZlZjc1ZThiZTk3ODQ3ZTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dFNldChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIAogfQpAQCAtNjksNiArNzAs
NyBAQAogICAgIGlzRXh0ZW5zaWJsZSAgICAgICAgICAgICByZWZsZWN0T2JqZWN0SXNFeHRlbnNp
YmxlICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBvd25LZXlzICAgICAgICAg
ICAgICAgICAgcmVmbGVjdE9iamVjdE93bktleXMgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCiAgICAgcHJldmVudEV4dGVuc2lvbnMgICAgICAgIHJlZmxlY3RPYmplY3RQcmV2
ZW50RXh0ZW5zaW9ucyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHNldCAgICAgICAg
ICAgICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0ICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDMKICAgICBzZXRQcm90b3R5cGVPZiAgICAgICAgICAgcmVmbGVjdE9iamVj
dFNldFByb3RvdHlwZU9mICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiBAZW5kCiAqLwpA
QCAtMjM0LDYgKzIzNiwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RTZXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGFy
Z2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOworICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwor
CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTVmFsdWUgcmVjZWl2ZXIgPSB0
YXJnZXQ7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA0KQorICAgICAgICByZWNl
aXZlciA9IGV4ZWMtPmFyZ3VtZW50KDMpOworCisgICAgLy8gRG8gbm90IHJhaXNlIGFueSByZWFk
b25seSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gc3RyaWN0IG1vZGUuCisgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBmYWxzZTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgaXNTdHJp
Y3RNb2RlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOworfQorCiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjBhYTVmNjRhMTA1ZTllY2I5MTYyNTUzOTIwNTQ1OWYw
ZjRhMWE0OC4uZWViZmQ1MDJjMTE5ODA2OTYyNjc0MTk5YTk5ZDg5OTVmMzNjMzRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cApAQCAtNDcsOCArNDcsOCBAQAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyOChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKLXN0YXRpYyB2b2lkIHNldFJlZ0V4cENv
bnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KTsKLXN0YXRpYyB2b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CitzdGF0aWMgYm9vbCBzZXRSZWdFeHBD
b25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSk7CitzdGF0aWMgYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApAQCAtMjM0LDE2ICsyMzQsMjIgQEAgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JS
aWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwQ29uc3RydWN0b3IoSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpLT5nZXRSaWdodENvbnRleHQoZXhlYykpOwogfQogCi12b2lkIHNldFJlZ0V4cENv
bnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhw
Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCisgICAgaWYgKGF1dG8g
Y29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpKSB7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5zZXRJbnB1dChleGVj
LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRSZWdFeHBDb25z
dHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCitib29sIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGls
aW5lKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8
UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCisgICAgaWYg
KGF1dG8gY29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKSB7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5zZXRNdWx0
aWxpbmUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbmxpbmUgU3RydWN0
dXJlKiBnZXRSZWdFeHBTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG5ld1RhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDRmZGFlYjRhNDlhOWM3YjFiNTFjYmY1
M2RjY2QwMmU0ZTA1YTJkNTAuLjc5MjJhNTBlMmQ0NGE5MGZjMjVkMzcwMDEzZDk5NGIyZTk1NDg4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCkpCiAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIik7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkp
Ci0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVy
dHkuIik7CisgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCBVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpOwogICAgICAgICBp
ZiAoIXJlZ0V4cC0+bV9sYXN0SW5kZXhJc1dyaXRhYmxlKSB7CiAgICAgICAgICAgICBpZiAoZGVz
Y3JpcHRvci53cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KTsKQEAgLTEyNywzNiArMTI3LDM2IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKQorICAg
ICAgICAgICAgcmVnRXhwLT5zZXRMYXN0SW5kZXgoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBz
aG91bGRUaHJvdyk7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYm
ICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAgICAgICAgICByZWdFeHAtPm1fbGFzdEluZGV4
SXNXcml0YWJsZSA9IGZhbHNlOwotICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKQotICAg
ICAgICAgICAgcmVnRXhwLT5zZXRMYXN0SW5kZXgoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBm
YWxzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
c2hvdWxkVGhyb3cpOwogfQogCi1zdGF0aWMgdm9pZCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhT
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQorc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCB0cnVlKTsKKyAg
ICByZXR1cm4gYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRM
YXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgdHJ1ZSk7CiB9CiAKLXN0YXRp
YyB2b2lkIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCitzdGF0aWMg
Ym9vbCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGFz
UmVnRXhwT2JqZWN0KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4
ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIGZhbHNlKTsKKyAgICByZXR1cm4gYXNSZWdFeHBP
YmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywgSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFsc2UpOwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJlZ0V4cE9iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KSB7Ci0gICAg
ICAgIGFzUmVnRXhwT2JqZWN0KGNlbGwpLT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29sIHJlc3VsdCA9IGFzUmVnRXhwT2JqZWN0KGNl
bGwpLT5zZXRMYXN0SW5kZXgoZXhlYywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAg
ICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGFzUmVnRXhwT2JqZWN0KGNlbGwpLCBzbG90LmlzU3Ry
aWN0TW9kZSgpCiAgICAgICAgICAgICA/IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdAog
ICAgICAgICAgICAgOiByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIEJhc2U6OnB1dChj
ZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6
cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBKU1ZhbHVl
IFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGE2MjZk
MjkxMmVhOGVhOGYyNTQzZjUxNzgyNjBlMmY4ZmQ1ZTdiNTcuLjg0MmFiOWE4ZTkzNWM3MDk0Mjg1
M2ZmZDA0MDA0MzliMmE4YmZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCkBAIC00MSwyMCArNDEsMjUgQEAgY2xhc3MgUmVnRXhwT2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQgc2V0UmVnRXhwKFZNJiB2bSwgUmVn
RXhwKiByKSB7IG1fcmVnRXhwLnNldCh2bSwgdGhpcywgcik7IH0KICAgICBSZWdFeHAqIHJlZ0V4
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldExhc3RJ
bmRleChFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCisgICAgYm9vbCBzZXRMYXN0
SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAgIHsKLSAgICAgICAg
bV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihsYXN0SW5kZXgpKTsK
LSAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKQorICAgICAgICBpZiAo
TElLRUxZKG1fbGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4
LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIobGFzdEluZGV4KSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHZvaWQgc2V0TGFz
dEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhy
b3cpCisgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJ
bmRleCwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9sYXN0
SW5kZXhJc1dyaXRhYmxlKSkKKyAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFi
bGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFz
dEluZGV4KTsKLSAgICAgICAgZWxzZSBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNWYWx1ZSBnZXRMYXN0
SW5kZXgoKSBjb25zdAogICAgIHsKQEAgLTY1LDcgKzcwLDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUq
LCBKU1N0cmluZyopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggOWE1ZGE4Mzk1N2MzMjRlOGRhZjQwMjVk
ZjQxNDk1MmQ4NGMwNTczOS4uYzhlMDAzYmY4NTk4MjYxYjkzNjBkN2NiNmI2MWI4YjdiNzJlYTY3
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RydWN0dXJlKiBTcGFyc2VBcnJheVZh
bHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRF
bnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIApA
QCAtMTAyLDEwICsxMDIsMTAgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwKICAgICAgICAgcmVt
b3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBlbnRyeS5wdXQoZXhlYywgYXJyYXksIHRoaXMsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CisgICAgcmV0dXJuIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAogYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQpAQCAtMTQ2LDIwICsxNDYs
MjAgQEAgdm9pZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKSBjb25zdAogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihCYXNlOjpnZXQoKSwg
YXR0cmlidXRlcyk7CiB9CiAKLXZvaWQgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1h
cCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoIShhdHRyaWJ1
dGVzICYgQWNjZXNzb3IpKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAg
ICAgICAgc2V0KGV4ZWMtPnZtKCksIG1hcCwgdmFsdWUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNhbGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVl
LCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmlj
dE1vZGUpOworICAgIHJldHVybiBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0
KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKIH0K
IAogSlNWYWx1ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
aAppbmRleCAwNzU0YjUzZDlkNjAxZGYyYWNkN2JjYWYyZTk0YWVmNmQzMzdkZmEyLi5mNzFkYzk5
NGU4OTRhNzI4M2E1NzJiMzMyNmM5ZTg3NjFiOTIyZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCkBAIC00NCw3ICs0NCw3
IEBAIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3du
PiB7CiAKICAgICB2b2lkIGdldChKU09iamVjdCosIFByb3BlcnR5U2xvdCYpIGNvbnN0OwogICAg
IHZvaWQgZ2V0KFByb3BlcnR5RGVzY3JpcHRvciYpIGNvbnN0OwotICAgIHZvaWQgcHV0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBKU1ZhbHVlIGdldE5vblNwYXJzZU1vZGUoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgU3BhcnNlQXJyYXlWYWx1ZU1hcCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgbWF5
IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAotICAgIHZvaWQgcHV0RW50cnkoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJ
bmRleE1vZGUpOwogICAgIEFkZFJlc3VsdCBhZGQoSlNPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAg
aXRlcmF0b3IgZmluZCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX21hcC5maW5kKGkpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCAwOTg4
ZDZkMDY5MDI5ODkwNGVkNTk5YTFkZTg4YzdmM2QwNDU0YTNkLi42NmZiNmZmMzhlMzZmNDExOGRi
YjgwMjk0M2IyYTBlNjNmZjJhZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgorI2luY2x1ZGUgIlJlamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NjAsNjcgKzYxLDU3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIEpTT2JqZWN0OjpwdXQoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHB1
dEJ5SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKworc3RhdGlj
IGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ09iamVjdCog
b2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4
KGluZGV4LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIEpT
T2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8U3RyaW5nT2JqZWN0Kj4ob2JqZWN0KTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOworICAgIGlmIChpc1N0cmluZ093blByb3Bl
cnR5KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgLy8gVGhlIGN1
cnJlbnQgUHJvcGVydHlEZXNjcmlwdG9yIGlzIGFsd2F5cworICAgICAgICAvLyBQcm9wZXJ0eURl
c2NyaXB0b3J7W1tWYWx1ZV1dOiB2YWx1ZSwgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJh
YmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlfS4KKyAgICAgICAgLy8gVGhpcyBl
bnN1cmVzIHRoYXQgYW55IHByb3BlcnR5IGRlc2NyaXB0b3IgY2Fubm90IGNoYW5nZSB0aGUgZXhp
c3Rpbmcgb25lLgorICAgICAgICAvLyBIZXJlLCBzaW1wbHkgcmV0dXJuIHRoZSByZXN1bHQgb2Yg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvci4KKyAgICAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLWV4b3RpYy1vYmplY3RzLWdldG93bnBy
b3BlcnR5LXAKKyAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGN1cnJlbnQ7CisgICAgICAgIGJv
b2wgaXNDdXJyZW50RGVmaW5lZCA9IHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnQpOworICAgICAgICBBU1NFUlQoaXNDdXJyZW50
RGVmaW5lZCk7CisgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGhpc09iamVjdC0+aXNFeHRl
bnNpYmxlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAgICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRl
bXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJs
ZS4iKSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewotICAgICAgICAgICAgaWYgKHRocm93RXhj
ZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ug
ZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVzY3JpcHRv
ci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7Ci0gICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nl
c3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLndy
aXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewotICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KCFkZXNjcmlwdG9yLnZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoICYmIHNhbWVW
YWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIGpzTnVtYmVyKHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKS0+bGVuZ3RoKCkpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSwgZGVzY3JpcHRv
ciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KIAog
ICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwpAQCAtMTMyLDkgKzEyMyw4IEBAIGJv
b2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpbmRl
eCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVl
KCkpKSB7CisgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2Fu
R2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5oCmluZGV4IDkwZTZlNWNjYTQ0YWEwNjQ3NDM1YTBhYWY3YmQwYjNjZmRmMWRhMDkuLjRm
ODk2OTc0MzljNTY1ZmY1MDZjMzljZjlmMGY3YjVmZjE3MGU5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC00OSw4ICs0OSw4IEBAIGNsYXNz
IFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCBlNGQyMmZhMmRiMGVhY2Q3NDg4OGNlZWQwMjZm
MzYxNmE2NzIwZTNkLi5hNGMzZWVjZGU4MjY1Mzc3ZWYzNjBkNGZlMDBhMTIzOWY1NjYwMDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC0xMDc3LDcgKzEwNzcsNyBAQAog
LSBwYXRoOiBlczYvUmVmbGVjdF9SZWZsZWN0LmNvbnN0cnVjdF9zZXRzX25ldy50YXJnZXRfbWV0
YV9wcm9wZXJ0eS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWZsZWN0
X1JlZmxlY3Quc2V0LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19SZWdFeHAucHJvdG90
eXBlW1N5bWJvbC5tYXRjaF0uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Jl
Z0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5yZXBsYWNl
XS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFt
ZXNwYWNlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNl
LmpzCmluZGV4IDY3ODkyODI2OWJjYjM1Zjc2MmZjYzFkMmQxNGQ2M2YwNDE4NWRjZWQuLjk1YzIy
ODMyYzhiZWE4NDQyOWI3ODJjYzhhY2FjYTJiZWRlNGRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanMKQEAgLTI3LDYgKzI3LDEyIEBA
CiBzaG91bGRCZShuYW1lc3BhY2UuX19wcm90b19fLCB1bmRlZmluZWQpOwogc2hvdWxkQmUoUmVm
bGVjdC5pc0V4dGVuc2libGUobmFtZXNwYWNlKSwgZmFsc2UpOwogCitzaG91bGRCZShSZWZsZWN0
LnNldChuYW1lc3BhY2UsICdFeHRlbmRlZCcsIDQyKSwgZmFsc2UpOworc2hvdWxkQmUoJ0V4dGVu
ZGVkJyBpbiBuYW1lc3BhY2UsIGZhbHNlKTsKKworc2hvdWxkQmUoUmVmbGVjdC5zZXQobmFtZXNw
YWNlLCA0MiwgNDIpLCBmYWxzZSk7CitzaG91bGRCZSg0MiBpbiBuYW1lc3BhY2UsIGZhbHNlKTsK
Kwogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIG5hbWVzcGFjZS52YWx1ZSA9IDIwOwogfSwgYFR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwOWY3Y2Y3NzQwOGNlZGIxMGE1MzlkYzc5ZmRkNzU1NGY2ODQ0OTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZmxlY3Qt
c2V0LmpzCkBAIC0wLDAgKzEsOTMwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAg
ICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5vdCB0aHJvd24uIik7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Nob3VsZEJlKFJlZmxl
Y3Quc2V0Lmxlbmd0aCwgMyk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBSZWZsZWN0LnNl
dCgiaGVsbG8iLCAiaGVsbG8iLCA0Mik7Cit9LCBgVHlwZUVycm9yOiBSZWZsZWN0LnNldCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisKK3ZhciBzeW1ib2wgPSBT
eW1ib2woKTsKKworKGZ1bmN0aW9uIHJlY2VpdmVyQ2FzZSgpIHsKKyAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5LCByZWNlaXZlciBpcyBub3Qgc3VwcG9ydGVkLgorICAgIHZhciByZWNlaXZlciA9IHt9
OworICAgIHZhciBvYmplY3QgPSB7CisgICAgfTsKKworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgJ0NvY29hJywgNDIsIHJlY2VpdmVyKSwgdHJ1ZSk7CisgICAgLy8gc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAnQ29jb2EnKSwgdW5kZWZpbmVkKTsKKyAgICAvLyBzaG91bGRC
ZShSZWZsZWN0LmdldChyZWNlaXZlciwgJ0NvY29hJyksIDQyKTsKKworICAgIHZhciBvYmplY3Qy
ID0geworICAgICAgICBzZXQgQ29jb2EodmFsdWUpIHsKKyAgICAgICAgICAgIHByaW50KHZhbHVl
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKHRoaXMsIHJlY2VpdmVyKTsKKyAgICAgICAgICAgIHRo
aXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAnQ29jb2EnLCA0MiwgcmVjZWl2ZXIpLCB0cnVlKTsKKyAgICAvLyBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdDb2NvYScpLCB1bmRlZmluZWQpOworICAgIC8vIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAnQ29jb2EnKSwgNDIpOworfSgpKTsKKworKGZ1
bmN0aW9uIHByb3h5Q2FzZSgpIHsKK30oKSk7CisKKyhmdW5jdGlvbiBvYmplY3RDYXNlKCkgewor
ICAgICd1c2Ugc3RyaWN0JzsKKyAgICB2YXIgb2JqZWN0ID0ge307CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgMCksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAw
LCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisKKyAgICB2YXIgb2Jq
ZWN0ID0ge307CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdo
ZWxsbycsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxz
ZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycs
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyks
ICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAw
LCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAg
ICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29h
Jyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIHZhbHVl
OiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIHZhciBvYmpl
Y3QgPSB7fTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hl
bGxvJywgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVy
biB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOyAgLy8gUmV0
dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1
cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAg
fSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0Nv
Y29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1
ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworCisgICAgdmFyIG9iamVj
dCA9IHt9OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVs
bG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hl
bGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVs
bG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmpl
Y3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7Cisg
ICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0Miks
IGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7Cisg
ICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9Cisg
ICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29h
Jyk7Cit9KCkpOworCisoZnVuY3Rpb24gYXJyYXlDYXNlKCkgeworICAgICd1c2Ugc3RyaWN0JzsK
KyAgICB2YXIgb2JqZWN0ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdo
ZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVs
bG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIHVuZGVmaW5l
ZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgb2JqZWN0WzEwMDAwMDBdID0gIkhlbGxvIjsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDUwKSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNTApOworCisgICAgdmFyIG9iamVjdCA9IFtd
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7
CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0Nv
Y29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAg
ICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUob2JqZWN0
Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IHN5bWJvbCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3lt
Ym9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2ws
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7CisKKyAgICAvLyBMZW5ndGguCisgICAgdmFyIG9iamVjdCA9IFtdOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsICdDYXBwdWNj
aW5vJyk7CisgICAgfSwgYFJhbmdlRXJyb3I6IEludmFsaWQgYXJyYXkgbGVuZ3RoYCk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworCisgICAgdmFyIG9i
amVjdCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAw
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAyMCksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAyMCk7CisKKyAg
ICB2YXIgb2JqZWN0ID0gW107CisgICAgT2JqZWN0LmZyZWV6ZShvYmplY3QpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAyMCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisKKyAgICB2YXIgb2JqZWN0ID0gW107Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisg
ICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5j
ZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9i
amVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsK
KyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNp
bmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0
LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7
CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOyAgLy8gUmV0
dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIHZhciBvYmplY3QgPSBbXTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAg
ICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAg
IH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAn
Q29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2Nv
YScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7Cisg
ICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9Cisg
ICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2Nv
YScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVl
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworfSgpKTsK
KworKGZ1bmN0aW9uIGFycmF5QnVmZmVyQ2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAg
dmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0Miks
IHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgb2JqZWN0WzEwMDAwMDBd
ID0gIkhlbGxvIjsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDUwKSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNTApOworCisgICAgdmFy
IG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZp
bmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVm
aW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAg
ICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCAwLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAn
Q29jb2EnKTsKKyAgICBzaG91bGRCZShvYmplY3QubGVuZ3RoLCB1bmRlZmluZWQpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAg
dmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworCisgICAgdmFy
IG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2Jq
ZWN0LCAnYnl0ZUxlbmd0aCcsICdDYXBwdWNjaW5vJyksIGZhbHNlKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKworICAgIHZhciBvYmplY3Qg
PSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2J5dGVMZW5ndGgnKSwgNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2J5
dGVMZW5ndGgnLCAyMDAwKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVj
dCwgJ2J5dGVMZW5ndGgnKSwgNjQpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZl
cig2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdieXRl
TGVuZ3RoJywgeworICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgZmFsc2UpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgNjQpOworICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAyMCksIGZhbHNlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKworICAg
IHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAg
ICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAg
ICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVs
bG8nLCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMu
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAg
Z2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAg
IHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmpl
Y3QsIDAsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0
cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAg
IGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAg
ICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBz
ZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAg
ICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0p
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAg
ICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAg
fSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScp
OworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7
CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworfSgpKTsKKwor
WworICAgIFsgVWludDhBcnJheSwgMSBdLAorICAgIFsgVWludDhDbGFtcGVkQXJyYXksIDFdLAor
ICAgIFsgVWludDE2QXJyYXksIDIgXSwKKyAgICBbIFVpbnQzMkFycmF5LCA0IF0sCisgICAgWyBJ
bnQ4QXJyYXksIDEgXSwKKyAgICBbIEludDE2QXJyYXksIDIgXSwKKyAgICBbIEludDMyQXJyYXks
IDQgXSwKKyAgICBbIEZsb2F0MzJBcnJheSwgNCBdLAorICAgIFsgRmxvYXQ2NEFycmF5LCA4IF0s
CitdLmZvckVhY2goZnVuY3Rpb24gdHlwZWRBcnJheUNhc2UoWyBUeXBlZEFycmF5LCBieXRlc1Bl
ckVsZW1lbnQgXSkgeworICAgICd1c2Ugc3RyaWN0JzsKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5
cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyks
IHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0
MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQy
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAwKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
c3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5
bWJvbCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJv
bCksIDQyKTsKKyAgICBvYmplY3RbMTAwMDAwMF0gPSAiSGVsbG8iOworICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgMCwgNTApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCA1MCk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7
CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0Nv
Y29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAg
ICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAwKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgIHNob3VsZEJlKG9iamVjdC5sZW5ndGgsIDY0
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7
CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsK
KworICAgIHZhciBvYmplY3QgPSBuZXcgVHlwZWRBcnJheSg2NCk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCBieXRlc1BlckVsZW1lbnQgKiA2NCk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcsICdDYXBwdWNjaW5v
JyksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3Ro
JyksIGJ5dGVzUGVyRWxlbWVudCAqIDY0KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcgVHlwZWRB
cnJheSg2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcp
LCBieXRlc1BlckVsZW1lbnQgKiA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCAnYnl0ZUxlbmd0aCcsIDIwMDApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCBieXRlc1BlckVsZW1lbnQgKiA2NCk7CisKKyAgICB2YXIg
b2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0K
KyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0
MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkg
eworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgp
IHsKKyAgICAgICAgfQorICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAwKSwgMCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0Miks
IHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAg
ICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5
bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9s
LCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAg
IHZhciBvYmplY3QgPSBuZXcgVHlwZWRBcnJheSg2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5k
ZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAg
ICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgMCk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2En
OworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
c3ltYm9sKSwgJ0NvY29hJyk7Cit9KTsKKworCisoZnVuY3Rpb24gYXJndW1lbnRDYXNlKCkgewor
ICAgIGZ1bmN0aW9uIHRlc3QxKCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCB1bmRlZmluZWQp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgdW5kZWZpbmVkKTsKKyAg
ICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3QyKCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAg
ICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICAg
ICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVs
bG8nLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCAwLCB7CisgICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAg
IHdyaXRhYmxlOiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0Lmxlbmd0aCwg
MCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1i
b2wsIHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAgICAgd3JpdGFibGU6
IGZhbHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3Qz
KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAgICAgIFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2xlbmd0aCcsICdDYXBwdWNjaW5vJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAnQ2FwcHVjY2lubycpOworCisgICAgICAgIFJlZmxlY3Qu
c2V0KG9iamVjdCwgJ2NhbGxlZScsICdDYXBwdWNjaW5vJyk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2NhbGxlZScpLCAnQ2FwcHVjY2lubycpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3Q0KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgewor
ICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycp
LCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8n
LCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAg
ICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSks
IHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2En
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOyAg
Ly8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICBnZXQoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgc2V0KCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOyAgLy8gUmV0
dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdDUoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgICAg
ICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmlu
ZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICAgICAg
Z2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAgfQor
ICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
c3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
c3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICB0ZXN0MSgpOworICAgIHRlc3QyKCk7
CisgICAgdGVzdDMoKTsKKyAgICB0ZXN0NCgpOworICAgIHRlc3Q1KCk7Cit9KCkpOworCisoZnVu
Y3Rpb24gYXJndW1lbnRTdHJpY3RDYXNlKCkgeworICAgICd1c2Ugc3RyaWN0JzsKKyAgICBmdW5j
dGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCA0Mik7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIHVuZGVmaW5lZCk7CisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
MigpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgICAgIHZh
bHVlOiAnQ29jb2EnLAorICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgICAgIH0pLCB0
cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0Nv
Y29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIp
LCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyks
ICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgMCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgICAgICB3cml0YWJs
ZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2Jq
ZWN0LCAwLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKG9iamVjdC5sZW5ndGgsIDApOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7Cisg
ICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZQor
ICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
c3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
c3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0MygpIHsKKyAg
ICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworICAgICAgICBSZWZsZWN0LnNldChvYmplY3QsICds
ZW5ndGgnLCAnQ2FwcHVjY2lubycpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdsZW5ndGgnKSwgJ0NhcHB1Y2Npbm8nKTsKKworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgICAgICBSZWZsZWN0LnNldChvYmplY3QsICdjYWxsZWUnLCAnQ2FwcHVjY2lu
bycpOworICAgICAgICB9LCBgVHlwZUVycm9yOiBUeXBlIGVycm9yYCk7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2NhbGxlZScp
OworICAgICAgICB9LCBgVHlwZUVycm9yOiBUeXBlIGVycm9yYCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdDQoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAg
ICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgc2V0KCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KSwg
dHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdD
b2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQy
KSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAg
ICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgc2V0KCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7ICAvLyBS
ZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBzZXQoKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4g
dHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
NSgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgICAgIGdl
dCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAn
aGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1i
b2wpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1i
b2wsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5
bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAgIHRlc3QxKCk7CisgICAgdGVzdDIoKTsKKyAg
ICB0ZXN0MygpOworICAgIHRlc3Q0KCk7CisgICAgdGVzdDUoKTsKK30oKSk7CisKKyhmdW5jdGlv
biBzdHJpbmdPYmplY3RDYXNlKCkgeworICAgICd1c2Ugc3RyaWN0JzsKKyAgICB2YXIgb2JqZWN0
ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVjdFsxMDAwMDAwXSA9ICJDb2NvYSI7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA1MCksIGZhbHNlKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworCisgICAgdmFyIG9iamVjdCA9IG5l
dyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRh
YmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
ICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAwLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTog
ZmFsc2UKKyAgICB9KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3Vs
ZEJlKG9iamVjdC5sZW5ndGgsIDUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdy
aXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworCisgICAgLy8gTGVuZ3RoLgorICAgIHZhciBvYmplY3QgPSBu
ZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xl
bmd0aCcpLCA1KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAn
Q2FwcHVjY2lubycpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
bGVuZ3RoJyksIDUpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsIDIwKSwgZmFsc2UpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsKKworICAgIHZhciBvYmplY3Qg
PSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgNSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywgMjApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOworCisgICAgdmFyIG9iamVjdCA9IG5l
dyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdD
b2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7
ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAg
ICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAg
ICB9CisgICAgfSksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7
ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAg
cmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQor
ICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCks
ICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0Miks
IHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIHZhciBv
YmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAg
ICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgZmFsc2UpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsIDApLCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0
LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7
CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
IHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBz
eW1ib2wpLCAnQ29jb2EnKTsKK30oKSk7CisKKyhmdW5jdGlvbiBjdXN0b21TZXR0ZXIoKSB7Cisg
ICAgLy8gSW4gdGhpcyBjYXNlLCBSZWdFeHAubXVsdGlsaW5lIGJlaGF2ZXMgbGlrZSBhIHNldHRl
ciBiZWNhdXNlIGl0IGNvZXJjZSBib29sZWFuIHR5cGUuCisgICAgLy8gQW55d2F5LCBpdCdzIE9L
LCBiZWNhdXNlIFJlZ0V4cC5tdWx0aWxpbmUgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgc3BlYy4K
KworICAgIGZ1bmN0aW9uIHRlc3QxKCkgeworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChS
ZWdFeHAsICdtdWx0aWxpbmUnLCAnQ2FwcHVjY2lubycpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5lJyksIHRydWUpOworICAgICAgICBzaG91
bGRCZShSZWZsZWN0LnNldChSZWdFeHAsICdtdWx0aWxpbmUnLCAwKSwgdHJ1ZSk7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScpLCBmYWxzZSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgJ0NhcHB1Y2Npbm8n
KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGlu
ZScpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGls
aW5lJywgMCksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAsICdt
dWx0aWxpbmUnKSwgZmFsc2UpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QzKCkgeworICAg
ICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkoUmVnRXhwLCAnbXVsdGlsaW5lJywgeworICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlCisg
ICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAn
bXVsdGlsaW5lJyksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhw
LCAnbXVsdGlsaW5lJywgJ0NhcHB1Y2Npbm8nKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgZmFsc2UpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChSZWdFeHAsICdtdWx0aWxpbmUnLCAwKSwgZmFsc2UpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgZmFsc2UpOworICAgIH0K
KworICAgIHRlc3QxKCk7CisgICAgdGVzdDIoKTsKKyAgICB0ZXN0MygpOworfSgpKTsKKworKGZ1
bmN0aW9uIHJlZ0V4cExhc3RJbmRleCgpIHsKKyAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgn
Q29jb2EnKTsKKyAgICByZWdleHAubGFzdEluZGV4ID0gJ0hlbGxvJzsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChyZWdleHAsICdsYXN0SW5kZXgnKSwgJ0hlbGxvJyk7CisgICAgcmVnZXhwLmxh
c3RJbmRleCA9IDQyOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJlZ2V4cCwgJ2xhc3RJbmRl
eCcpLCA0Mik7CisKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChyZWdleHAsICdsYXN0SW5kZXgn
LCAnSGVsbG8nKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQocmVnZXhwLCAnbGFz
dEluZGV4JyksICdIZWxsbycpOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShyZWdleHAsICdsYXN0SW5kZXgnLCB7CisgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgd3Jp
dGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJl
Z2V4cCwgJ2xhc3RJbmRleCcpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQocmVnZXhw
LCAnbGFzdEluZGV4JywgJ0hlbGxvJyksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChyZWdleHAsICdsYXN0SW5kZXgnKSwgNDIpOworCisgICAgc2hvdWxkVGhyb3coZnVuY3Rpb24g
KCkgeworICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSAi
TkciOworICAgIH0sIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkg
cHJvcGVydHkuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gZnVuY3Rpb25DYXNlKCkgeworICAgIHZh
ciBmdW5jID0gZnVuY3Rpb24gKCkgeyB9OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMs
ICdhcmd1bWVudHMnKSwgbnVsbCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoZnVuYywgJ2Fy
Z3VtZW50cycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMsICdh
cmd1bWVudHMnKSwgbnVsbCk7CisKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChmdW5jLCAnY2Fs
bGVyJyksIG51bGwpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1bmMsICdjYWxsZXInLCA0
MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChmdW5jLCAnY2FsbGVyJyksIG51
bGwpOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc3RyaW5nLW9iamVjdC1kZWZpbmUtb3duLXByb3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctb2JqZWN0LWRlZmluZS1vd24tcHJvcGVydHkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmVkNzExMzFlYjdlYWMzNmQ0NDdjNTI1NmYzYmYzMzY3ZGEzMzkxMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3RyaW5n
LW9iamVjdC1kZWZpbmUtb3duLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigibm90IHRocm93bi4iKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3Ip
KTsKK30KKwordmFyIHN0cmluZyA9IG5ldyBTdHJpbmcoIkNvY29hIik7CitzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KHN0cmluZywgMCwgeworfSksIHRydWUpOworc2hvdWxkQmUoUmVm
bGVjdC5nZXQoc3RyaW5nLCAwKSwgJ0MnKTsKKworc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShzdHJpbmcsIDAsIHsKKyAgICBjb25maWd1cmFibGU6IGZhbHNlCit9KSwgdHJ1ZSk7Citz
aG91bGRCZShSZWZsZWN0LmdldChzdHJpbmcsIDApLCAnQycpOworCitzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KHN0cmluZywgMCwgeworICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorfSks
IGZhbHNlKTsKK3Nob3VsZEJlKFJlZmxlY3QuZ2V0KHN0cmluZywgMCksICdDJyk7CisKK3Nob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoc3RyaW5nLCAwLCB7CisgICAgZW51bWVyYWJsZTog
dHJ1ZQorfSksIHRydWUpOworc2hvdWxkQmUoUmVmbGVjdC5nZXQoc3RyaW5nLCAwKSwgJ0MnKTsK
Kworc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShzdHJpbmcsIDAsIHsKKyAgICBlbnVt
ZXJhYmxlOiBmYWxzZQorfSksIGZhbHNlKTsKK3Nob3VsZEJlKFJlZmxlY3QuZ2V0KHN0cmluZywg
MCksICdDJyk7CisKK3Nob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoc3RyaW5nLCAwLCB7
CisgICAgd3JpdGFibGU6IGZhbHNlLAorfSksIHRydWUpOworc2hvdWxkQmUoUmVmbGVjdC5nZXQo
c3RyaW5nLCAwKSwgJ0MnKTsKKworc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShzdHJp
bmcsIDAsIHsKKyAgICB3cml0YWJsZTogZmFsc2UsCisgICAgdmFsdWU6ICdDJywKKyAgICBjb25m
aWd1cmFibGU6IHRydWUKK30pLCBmYWxzZSk7CitzaG91bGRCZShSZWZsZWN0LmdldChzdHJpbmcs
IDApLCAnQycpOworCitzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KHN0cmluZywgMCwg
eworICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA1MiwKK30pLCBmYWxzZSk7CitzaG91
bGRCZShSZWZsZWN0LmdldChzdHJpbmcsIDApLCAnQycpOworCitzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KHN0cmluZywgMCwgeworICAgIHZhbHVlOiA1MiwKK30pLCBmYWxzZSk7Citz
aG91bGRCZShSZWZsZWN0LmdldChzdHJpbmcsIDApLCAnQycpOworCitzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KHN0cmluZywgMCwgeworICAgIHdyaXRhYmxlOiBmYWxzZSwKKyAgICB2
YWx1ZTogJ0MnLAorICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKK30pLCB0cnVlKTsKK3Nob3VsZEJl
KFJlZmxlY3QuZ2V0KHN0cmluZywgMCksICdDJyk7CisKKy8vIE91dCBvZiByYW5nZS4KK3Nob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoc3RyaW5nLCAyMDAwLCB7CisgICAgdmFsdWU6ICdD
YXBwdWNjaW5vJworfSksIHRydWUpOworc2hvdWxkQmUoUmVmbGVjdC5nZXQoc3RyaW5nLCAyMDAw
KSwgJ0NhcHB1Y2Npbm8nKTsKK3Nob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoc3RyaW5n
LCAiSGVsbG8iLCB7CisgICAgdmFsdWU6ICdDYXBwdWNjaW5vJworfSksIHRydWUpOworc2hvdWxk
QmUoUmVmbGVjdC5nZXQoc3RyaW5nLCAiSGVsbG8iKSwgJ0NhcHB1Y2Npbm8nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3RyaW5nLW9iamVjdC1wdXQt
YnktaW5kZXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1v
YmplY3QtcHV0LWJ5LWluZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkOWNiZDQ1ZmVmZWY5OTg3OTFhYWI5
MmRjMjUxOGJiNTM2Nzk5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N0cmluZy1vYmplY3QtcHV0LWJ5LWluZGV4LmpzCkBAIC0wLDAgKzEs
NDEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdlKSB7Cisg
ICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigibm90IHRocm93bi4iKTsKKyAgICBpZiAoU3RyaW5nKGVy
cm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgZXJyb3I6ICIg
KyBTdHJpbmcoZXJyb3IpKTsKK30KKworZnVuY3Rpb24gdGVzdFNsb3BweShzdHJpbmcpCit7Cisg
ICAgc3RyaW5nWzBdID0gNTI7CisgICAgc2hvdWxkQmUoc3RyaW5nWzBdLCAnQycpOworCisgICAg
c3RyaW5nWzEwMF0gPSA1MjsKKyAgICBzaG91bGRCZShzdHJpbmdbMTAwXSwgNTIpOworfQorCitm
dW5jdGlvbiB0ZXN0U3RyaWN0KHN0cmluZykKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBzdHJpbmdbMF0gPSA1MjsKKyAgICB9LCBgVHlwZUVy
cm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOworICAgIHNo
b3VsZEJlKHN0cmluZ1swXSwgJ0MnKTsKKworICAgIHN0cmluZ1sxMDBdID0gNTI7CisgICAgc2hv
dWxkQmUoc3RyaW5nWzEwMF0sIDUyKTsKK30KKwordGVzdFNsb3BweShuZXcgU3RyaW5nKCJDb2Nv
YSIpKTsKK3Rlc3RTdHJpY3QobmV3IFN0cmluZygiQ29jb2EiKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cAppbmRleCA1NGFjYjdiNWViNjJkYTk1Yjg1YTU5ODc3ODZlMTJiMzYxZTVhOGQzLi40NjllNDEx
YjNiMDJmNTUwYzY0Zjc1YmE3MjZiNTFlM2FlM2E0YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
QEAgLTMyMCw3ICszMjAsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKQorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIENTU1Byb3BlcnR5SW5m
byBwcm9wZXJ0eUluZm8gPSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMzQxLDcgKzM0
MSw3IEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eUlEPihwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7Ci0gICAgd3JhcHBlZCgpLnNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICBwdXRS
ZXN1bHQgPSB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFs
dWUsIGltcG9ydGFudCwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCmluZGV4IGJmZGNlZjQ4MDgwNTgxMjNlZTA2YmNkODA5NmU0MmYyNTg5MGQ4ZjAuLjIwYjlm
ZjUwNzQ5MmM2Yjk0MmY2ZGRiNDA5YzMzYWQ0MDMyM2Y4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNzAxLDkgKzcwMSwxMCBAQCB2b2lkIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlLCAiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKTsKIH0KIAotdm9pZCB0aHJv
d1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsKICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
bWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBz
ZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkp
OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAppbmRleCAwOTE2ZGUxMzYwODVmMjQ1OWM1NThhODFkYWI0ZWY0NmU1YmY3MWY3Li5j
ODkwMmU2OWJlNzA3ZjZkODY5MjkzYmUxZTc1YjE0ZWY4NjhlYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXhj
ZXB0aW9uRGV0YWlscyB7CiB2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJik7CiB2b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29u
c3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5j
ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1Nl
dHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB0aHJvd1Nl
dHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFZhbHVlcyk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggMjI3MWZkOWFi
OWE3Y2FkMGUzYTNiNThjOWI5MGUzODdmMDgwOTcyOS4uNjJiN2UzZmNiY2ZiOThmYWIyN2U5OTQ4
ZmZjMjU4ZGFjYWZmZTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTRE9NU3Ry
aW5nTWFwOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbgogICAgIHJldHVybiBkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGluZGV4KSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGlmIChwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNiArODUs
NyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIHdyYXBwZWQoKS5zZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSks
IHN0cmluZ1ZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBw
dXRSZXN1bHQgPSAhZWM7CiAgICAgcmV0dXJuICFlYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMDE0OTZlZTZhNDdjOWVhZGQ2
MjQ0OTI5M2JiMGVjMGVlNWM5MjE0Mi4uOTMxMTEyMmQ0ZGVkNzVkOTY4N2E2OWI1NGU3ZTM2ZjY2
ZGFlODNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCkBAIC0xMDMsNyArMTAzLDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURv
Y3VtZW50KCkKIHsKICAgICBBU1NFUlQobV93cmFwcGVkLT5kb2N1bWVudCgpKTsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxFeGVjKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmli
dXRlc1RvdWNoV2F0Y2hwb2ludFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFt
ZXMtPmRvY3VtZW50LCB0b0pTKGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMs
IGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93
cmFwcGVkLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBwdXRSZXN1bHQpOwog
fQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDg4ZTJmMWE4YzEyNzI4MDJjNDZhY2M2NjZmMDdkNGRj
NmUzOWJmNzIuLjE2YmIwZDBhOWFkNGYyZWI1MjNiMzc0YzZlNzhkN2I4NjlmMjk3NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTM0MiwzMiArMzQyLDM1IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgcmV0dXJuIGpz
RE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKHRoaXNPYmplY3QsICpm
cmFtZSwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCksIHNsb3QpOwogfQogCi12
b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK2Jvb2wgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihj
ZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7
CiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNl
dHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikKLSAgICAgICAgICAg
IGxvb2t1cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZv
LnN0YXRpY1Byb3BIYXNoVGFibGUsIHNsb3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzT2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxv
Y2F0aW9uKSB7CisgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAg
ICAgaWYgKGxvb2t1cFB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAq
c19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzT2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZv
aWQgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBK
U0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhp
c09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkgfHwgIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBCYXNlOjpwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJl
dHVybiBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggOWRmYmI0ZDUzZWZlYmM3ZDMzM2Q5MzRjMTg1NTE1MGUwNjYzOTEzZS4u
MjI5ZTY4Mzk5OGUzOTJlNTE2NzQ4ZTYyNTQ3ZmVmZjk4NGViODdhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5j
cHAKQEAgLTM4LDkgKzM4LDkgQEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4g
cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50
LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRN
TEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0hUTUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCwgYm9vbCYgcHV0UmVzdWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVn
aW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3Qs
IHB1dFJlc3VsdCk7CiB9CiAKIENhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXgg
YTJlOTE4MzEwYjFlZGE0OWUxN2I1ZDA4MGI4YzQ0OWUxMThmMDFkMi4uOTE5ZjY4NjYyYTExYjU4
MmFkYWViMDgyYWZjNTBiZDcyNWJhN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5
IEBAIGJvb2wgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVu
dDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkK
IHsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBD
YWxsVHlwZSBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA4M2Y5OGY3ZjdjYzNkMTBiNTEz
MTA2ZDVjNjI5YzU2NDZkY2Y3MTZmLi40YTg2NDdmODllYmM3MDA3MjllYzgzMGNhNmRhYzliOWU4
ZTczMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmpl
Y3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTE9i
amVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYQogICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90PEpTSFRNTE9iamVjdEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwg
dGhpcyk7CiB9CiAKLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywg
c2xvdCk7CisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgdGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1M
T2JqZWN0RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CmluZGV4IDU3MGY5Y2ZiODVlODljOGI1YTk2NmU0OTliMTA4ZDQxNzUzY2NjYjIuLjhmZmRhMTI2
ZTMwNzNhMzY1NjMwYTQ0YzE1OTU1MTBmODFhOTc5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC02MCw4ICs2MCw5IEBAIGJvb2wg
SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNMb2NhdGlv
bjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7
CisgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NSw3ICs3
Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShw
cm9wZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVEb21haW5B
Y2Nlc3MpCi0gICAgICAgICAgICBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworICAgICAgICAgICAgcHV0UmVzdWx0ID0gSlNPYmplY3Q6OnB1dCh0
aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0xMzcsOCArMTM4LDkgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0
cmluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgd3JhcHBlZCgpLnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Q
cm90b3R5cGU6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3Rv
dHlwZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAg
cHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudmFsdWVPZik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDdlYTczYjExMTNkMGFmN2Mx
Y2U3MTdiYmJjODRhODgyNjc3MDk1NjkuLjI4NjUzNzJlOWFlNzFmNGE1Y2E1MDRlZTA4NDk1NWFi
NWViMTRkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBwbHVn
aW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50
Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3Qq
IHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBp
ZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghc2NyaXB0
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgc2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBzY3Jp
cHRPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4
IGRkYTNkMGM5ZjVmODA1ZjMxNzA3NTM4YmQ1Yjg4OTU4OWM5ZGQyNTYuLjQxMTY2MWU2ZmFlNWYz
OTYyOGNlZmE5YTVlZjdjMThhY2I2NTI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC00MSw3ICs0MSw3IEBA
CiAgICAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlND
OjpFeGVjU3RhdGUqLAogICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKICAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxF
bGVtZW50Kik7Ci0gICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVu
dCosIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBKU0M6OkNh
bGxUeXBlIHBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxs
RGF0YSYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1
Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwg
VHlwZSogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VD
dXN0b20uY3BwCmluZGV4IDNhYTdlOTQzOGVjZDE1OWI1YmYwYzliZjVhMmUzNWVkZmNkNzBiNjEu
LjlmNTI1NjFiODU4MzIwNTgwZGNiODNmMWE3YzVmMWFmODIzYTk2Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNTdG9y
YWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTU3RvcmFnZTo6cHV0
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgLy8g
T25seSBwZXJmb3JtIHRoZSBjdXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEg
bmF0aXZlIHByb3BlcnR5IGJ5IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgp
IHdvdWxkIGVuZCB1cCBjYWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQs
IHdlIG5lZWQgdG8gY2hlY2sKQEAgLTExOSwxMyArMTE5LDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUKICAgICAgICAgLy8gaWYgdHJ1ZSwgdGVsbHMgdGhlIGNhbGxlciBub3QgdG8gZXhlY3V0
ZSB0aGUgZ2VuZXJpYyBwdXQpLiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSB3aGV0aGVyCiAgICAgICAg
IC8vIHB1dERlbGVnYXRlKCkgZGlkIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgb3BlcmF0aW9u
IG9yIG5vdCAod2hpY2ggaXQgZGlkbid0IGluIHRoaXMKICAgICAgICAgLy8gY2FzZSBkdWUgdG8g
dGhlIGV4Y2VwdGlvbikuCisgICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVk
KCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1
ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBwdXRSZXN1bHQg
PSAhZWM7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYmUxZjhlNjgzYmFjN2MxNjU3
ZjliZmFkNThmNzUzZjg5MTkwNzRjOC4uMzYxNjA3OTk2M2ViODA5YWUxNjJkYjMyN2E1NWE4YWM2
ODI4MDljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTEwNDEsOSArMTA0MSw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
CiAgICAgIyBHZXR0ZXJzCiAgICAgaWYgKCRvdmVycmlkZXNQdXQpIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
dm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1l
ZFNldHRlciJ9OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29s
IHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJv
b2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAg
ICB9CiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKQEAgLTEzNDEsNyArMTM0MSw3IEBAIHN1YiBH
ZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5j
b2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHko
JGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRl
U2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtzZXR0
ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiYm9vbCAk
e3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBA
IC0xODg5LDcgKzE4ODksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIp
OwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAg
ICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMTkwMCw3ICsxOTAwLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgfQogCiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0
aW9uTmFtZSA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpO1xuIik7CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwog
ICAgIH0KQEAgLTIxNDQsMTIgKzIxNDQsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICB9CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3Vz
dG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2Ns
YXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm47XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0
ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0yNTM5LDE4ICsyNTQwLDE4IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFt
ZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwogCi0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgp
LCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KICAgICBteSAkaGFzQ3VzdG9t
U2V0dGVyID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0
dGVyIn0KQEAgLTI1NTgsMjYgKzI1NTksMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
IAogICAgIGlmICgkaGFzQ3VzdG9tU2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBz
dGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFs
dWUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVn
YXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1
bHQ7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0
dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0
dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWdu
ZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKQEAgLTI1ODUsMTggKzI1ODcsMTkgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleCwgdmFsdWUpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3Qt
PnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQp
KVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gcHV0UmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwg
aW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MjAsNyAr
MjYyMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkYXR0
cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgJHthdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRy
aWJ1dGVDb25kaXRpb25hbFN0cmluZzsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ2b2lkICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0
aWM7CkBAIC0yNjMyLDcgKzI2MzUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVuaWVudFRoaXMifSkg
ewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1
aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhl
IHByb3RvdHlwZSBjaGFpbiBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwpAQCAtMjY0NCw4
ICsyNjQ3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERlcHJlY2F0
ZWRTZXR0ZXJFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVy
ZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAg
ICAgICAgICB9CkBAIC0yNjU1LDExICsyNjU3LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNh
c3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtc
biIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnNldCRpbXBsU2V0dGVyRnVu
Y3Rpb25OYW1lKCpzdGF0ZSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0
eXBlIGVxICJFdmVudEhhbmRsZXIiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGV2ZW50TmFtZSA9
IEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZSgkYXR0cmlidXRlKTsKQEAgLTI2NzQsNiAr
MjY3Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICJzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVl
O1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUg
PX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBl
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKQEAgLTI2ODQsMTAgKzI2ODgsMTAgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiks
IHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC5c
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIk
bmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsK
ICAgICAgICAgICAgICAgICAgICAgbXkgJHB1dEZvcndhcmRzID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUHV0Rm9yd2FyZHMifTsKQEAgLTI2OTcsNyArMjcw
MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7YXR0cmlidXRl
VHlwZX0+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVy
RnVuY3Rpb25OYW1lfSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFmb3J3YXJkZWRJbXBsKVxuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBB
dHRyaWJ1dGUgaXMgbm90IG51bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQg
dG8gcmV0dXJuIGEgcmVmZXJlbmNlLgpAQCAtMjcyNywxNCArMjczMSwxNCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PklzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkgJiYgIXZhbHVlLmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSkpIHtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwi
JGFyZ1R5cGVcIik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGZhbHNlO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51
bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNv
ZGVHZW5lcmF0b3ItPlZhbGlkRW51bVZhbHVlcygkdHlwZSk7CkBAIC0yNzQzLDEzICsyNzQ3LDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBlbnVtQ2hlY2tzLCAibmF0aXZlVmFsdWUgIT0gXCIkZW51bVZhbHVlXCIiKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwotICAgICAg
ICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgImRvdWJsZSIgb3IgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlIGVxICJmbG9hdCIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkge1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIFR5cGVFcnJvcik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0K
IApAQCAtMjc1Nyw3ICsyNzYxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
Mjc4MSw2ICsyNzg1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLmNvbW1pdENoYW5n
ZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRy
dWU7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBt
eSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhw
cmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSBhbmQgbm90ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZSBlcSAiQXJyYXlCdWZmZXIiKSB7CkBAIC0yODA1LDYgKzI4MTAsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJl
YyIpIGlmICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1l
bnRzKSAuICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2Vw
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ2NTYs
OCArNDY2Miw4IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblBy
b3RvdHlwZSJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Ci0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJv
b2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKICAgICB9CiAKICAgICAj
IEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCAyODRlZmY0ZTdhMmJiZjlhMGI0NjM0MjVjMjIzMWFjOGQ4ZDZiOTM4
Li5kYmI2ZDRmYWJhZTA4NjM0ZDcyZDliYTVkZWVmZjNlYTFkOWMzMzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEFj
dGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTc0LDE2ICsxNzQs
MTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJl
dHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggMDMyMjg3ZDhlOWM4ZmM2MzAzMTQ5NGZmYzU3MDg2NDMxYjFhYzQ1
MC4uYjY5ZmVlMTA0Nzc4MGQ2NmEzYjllZDI1Nzg4MWFhZjM4MDBlMTY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMzQsMTYgKzEzNCwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0
dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDA1MTc0NzAy
ZGVjYmY2YjBmY2VhNDlkMzI4YmIxMTQ0NGM3YmY1MmIuLjViZWZjMTcyYWY5M2VkNTVlNTcwNzlj
NmJkYWM0ZTI4ZjBkZDkwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMzMsNyArMzMs
NyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jv
b2wgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpA
QCAtMTMxLDE2ICsxMzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdG9yKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7CiB9CiAKIGJvb2wgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGUzODc4OGI5ZTlhYTgyNjNlZWExZjYz
MjQxZDc4OTA3NjcxZTg1NTAuLmIzNTExYTk1NDk5MzI0MTc4ZjY3Yjc0YmYwOTAxZTRiOTA5NGRj
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtNDAsNyArNDAs
NyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5h
bWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogCiBjbGFzcyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY2LDE2ICsxNjYsMTYgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1
cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGZhODkwYjNk
NTI4NjY1MWRiZTVhMTZhZmRmZGE4NWQyYTZjYzEzNjIuLjI4ZjNjMGZmNGM0MmQxNDcwOWY3YWE3
ZTAzYmMzMWYwMTFjODk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0
cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0yMDEsMTYgKzIwMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9p
ZCBzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0K
IAogSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAppbmRleCA1N2FmNTYwODZhZmMzZDllZjI0NzU0MmRlYzhmYzQyZDE3NTdjOGIzLi4zOWZm
ZTJiYjk4NDU1NGRhMDRiMTViYjBkZDk0NDgzMmZkOWRmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIAogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NSwxNiArMTY1LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBhMGMwZmI0OGYz
MmI3ODkxMDliN2Y2ODk3ZTk0ZWRmMjI2ZDY0NmZmLi5hODY3OWMyMDcwNTE2YWU1MTMwZjdhMjA5
NjliN2ZlNGQxNTlkOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFeGNl
cHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogCiBjbGFzcyBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLXZvaWQgc2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsK
KyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFeGNl
cHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA3
NWM0MTBjYzJiY2VlNWZhOGFhNzRlMjI3NDA4MWY5ZGFhMGY3YTNlLi4zYzQ4OGIzNjFmZTEyZDU2
NjIyYTA4ZTljOTBiY2Q5ODZiZTZmMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTEyMywxNiArMTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25z
dHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12
b2lkIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKaW5kZXggZTc5NmVhNDdiOTZiZDY4MThmMmU1MjI1ZjJhMTIyZDdh
MzBmNThlOS4uNDA4YmRhMDk0NTdlNzc5ZDJmM2IyZmJhNmU4Y2NlMmFmMjc1ZTIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKQEAgLTgzLDQ3ICs4Myw0NyBAQAogI2VuZGlmCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNT
dHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZUltcGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3Rh
dGljUmVhZE9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtNTk0LDE2NCArNTk0
LDE2OCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0
YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0
ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRl
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTVGVzdEludGVyZmFjZTo6
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2U6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1
dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1
bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXRCeUlu
ZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0
ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVGVzdEludGVy
ZmFjZTo6c2V0SW1wbGVtZW50c1N0YXRpY0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzU3RyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c1N0cjIobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIzIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEltcGxlbWVudHNTdHIzKCpzdGF0
ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
ImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCBuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxl
bWVudGFsU3RyMyIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRTdXBwbGVtZW50YWxTdHIz
KCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCBuYXRpdmVWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IGVh
NmNlYzYyZDVmZmU1ZjRiYzAxODYwMTE0M2ZjNTQ4ZGEwMDUwZGMuLjI0YzkwOGYwMzQxYmU0ZjUx
ZDQzZDUyZTExMmRiZWNiMzQyZTNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0LDkgKzQ0
LDkgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpTRE9N
V3JhcHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7Ci0g
ICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBi
b29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggODU2MjllMjk3ZTEzMTRhOWI4OTMxYzczODc2ODMzMjc1
YWJjY2MyNC4uY2Q3Njg3M2Q4MzJkMmVjNmE0MTIxMmVlOGFiNmRjYjQyOWM4MDE2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC00MCw5ICs0MCw5IEBA
CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0x
NjYsMjggKzE2NiwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOwogfQogCi12b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
IiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IiLCAidGVzdEF0dHJpYnV0ZVJXQ3VzdG9tIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNl
dFRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5k
ZXggOWE0OTcxYTg0YWEzNGU4YTY1NDAxZWRmZTY2MzAzMzE1MjdlMGYyYi4uMzRkZTY4YzJhMzAy
YTAxZWM1OTY3NjdkNTZiOWY5NDVjMWZhYTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0cmlidXRlcwog
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBj
bGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMzEsMTYgKzEzMSwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNW
YWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggOTljZmIzZDg0OTg4MjdlMTVlM2FlZTE3MWZiZWQ4NDVmZjc1
MzQ4ZC4uNGRlNjZjZmI5ZWIwOWIxZmE2ODk5YWM5OTRlMmU4OThkMDQzYmM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogLy8gQXR0cmli
dXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CkBAIC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAot
dm9pZCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0g
ICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsK
IH0KIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXgg
ZDhkNjBmNmE5Y2MzYmYwOWM4ODJmMTY2N2JlNGYyOGFjOTUwZjM3OC4uNjQyYmRlYzZiZWY2MDg1
YTYzOWY5NGJlODA5MjZiYjI4MzdjMWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMzYsOSArMzYsOSBA
QAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlTmFtZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5v
ZGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xh
c3MgSlNUZXN0Tm9kZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgpAQCAtMTQ0LDMyICsxNDQsMzIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0
Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRv
bU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRl
LT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAK
LXZvaWQgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5v
ZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0TmFtZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmluZGV4IDI1NGJjNjU4MmE5YWNiYTczOTgwNDk2
YWI1MGJhMWY4ODdjNDg0MzIuLjk3NzIzYWE4NTJiYzFkOTM2YWE3NGNkZjI5NjAyYmJiZTM5NTll
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTQ4LDE1ICs0OCwx
NSBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY0V4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0
dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2Vw
dGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpT
VGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTMzMSw4NSArMzMxLDg1IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOwogfQogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
V3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAi
bm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0
aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RO
b25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY0V4Y2Vw
dGlvbkF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldE5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNT
ZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9u
ZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0cihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNWQ0
Mzk5NjgxYWMzYmU2ODhiMTcwZWFkOWM2ZTRhYjUwMDI1YmRiNC4uOTY1MjAwZmUzMWUyZGEwZGE4
YTE1MzQ4NzE2NjIwNzYwYjg5NDRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIwMCwxNTkgKzIwMCwxNTkg
QEAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmlu
Z0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU2hv
cnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25n
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9u
Z0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9i
akF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpVbmZvcmdlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialhNTE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3ltYm9sQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seVN5bWJv
bEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFs
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialR5cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI1Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBbnlB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakltbXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaWN0RmxvYXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRl
c2NyaXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0
dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVT
dHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhS
ZXNlcnZlZEVudW1UeXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZl
ZEVudW1UeXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpQ
dXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialB1dEZvcndh
cmRzTnVsbGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjA0NCwxMTAwICsyMDQ0LDEwOTcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRv
bU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0
aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJpbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVj
dChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGly
ZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqRW51
bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobmF0aXZlVmFs
dWUgIT0gIiIgJiYgbmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTEiICYmIG5hdGl2ZVZhbHVlICE9
ICJFbnVtVmFsdWUyIiAmJiBuYXRpdmVWYWx1ZSAhPSAiRW51bVZhbHVlMyIpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0RW51bUF0dHIobmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJieXRlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGludDhfdCBuYXRpdmVWYWx1ZSA9IHRvSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEJ5dGVB
dHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqT2N0ZXRBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9IHRvVUludDgoc3Rh
dGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaW1wbC5zZXRPY3RldEF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJzaG9ydEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQxNl90IG5hdGl2ZVZh
bHVlID0gdG9JbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFNob3J0QXR0cihuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDE2X3QgbmF0aXZlVmFsdWUgPSB0
b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkU2hvcnRBdHRyKG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TG9uZ0F0dHIobmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0TG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZl
VmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0
YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dFN0cmluZ0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVz
dE9iakF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZh
bHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpbXBsLnNldFRlc3RPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldExlbmllbnRUZXN0
T2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpYTUxP
YmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRYTUxP
YmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiY3JlYXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q3JlYXRlKG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRT
dHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgbmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW50ZWdyYWxBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyLCBuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFs
dWUgPSB0b1VJbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIsIG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEJvb2xlYW5BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkdXJsYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
OjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50
ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0
dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xl
YW5BdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0
eXBlZEFycmF5QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMy
QXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFR5cGVk
QXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlu
dCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUs
IHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKG5hdGl2ZVZhbHVlLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVl
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJp
YnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5o
ZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJU
ZXN0T2JqIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07
CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaWN0VHlwZUNoZWNraW5n
QXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakN1
c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21B
dHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwogICAgIH0KICAgICBjYXN0ZWRU
aGlzLT5zZXRDdXN0b21BdHRyKCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28i
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRsZXJB
dHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVu
dE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9J
bnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUsIG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhD
YWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNh
bGxXaXRoQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlLCBhY3RpdmVET01X
aW5kb3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSksIG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1w
bC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0LCBu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5h
dGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3Rh
dGUsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1
ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVW
YWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRl
c3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpbXBsLnNldENvbmRpdGlvbmFsQXR0cjEobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMikKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dENvbmRpdGlvbmFsQXR0cjIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLXZv
aWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZl
cnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldENvbmRpdGlvbmFs
QXR0cjMobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25k
aXRpb25hbEF0dHI0IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0g
ICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLXZvaWQgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyNiIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKKyAgICByZXR1
cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgogCi12
b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYW55QXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUgPSB7IHN0YXRlLT52bSgpLCB2YWx1ZSB9OwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9p
bnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2
ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRNdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJpbW11dGFibGVQb2ludCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVl
ID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRJbW11dGFibGVQb2ludChuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Qmx1ZWJlcnJ5KG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAic3RyaWN0RmxvYXQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBmbG9hdCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvRmxvYXQoc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmljdEZsb2F0KG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iaklkKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImlkIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SWQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAicmVwbGFjZWFibGVBdHRy
aWJ1dGUiKSwgdmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJyZXBsYWNlYWJsZUF0dHJpYnV0
ZSIpLCB2YWx1ZSk7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldE51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVl
VG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soc3RhdGUsIHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmli
dXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
ak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJp
bmdWYWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROdWxsYWJsZVN0
cmluZ1ZhbHVlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJp
bmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG5hdGl2ZVZhbHVlICE9ICIiICYmIG5hdGl2
ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMSIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFs
dWUyIiAmJiBuYXRpdmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTMiKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhSZXNlcnZl
ZEVudW1UeXBlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0
Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJ
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAg
YXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0TmFtZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNO
dWxsYWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVB
dHRyaWJ1dGUiKTsKICAgICB9CiAgICAgUmVmUHRyPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKTsKICAg
ICBpZiAoIWZvcndhcmRlZEltcGwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGF1dG8mIGltcGwgPSAqZm9yd2FyZGVkSW1wbDsKICAgICBTdHJpbmcgbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHAKaW5kZXggMTAzMmZlODgzZTEwOGRlNDJjNGQyNDllNzYwMmRmMDgwODFhNzgwZi4uNDMzZmZk
N2UzOGZmMjgwM2NjZThhNWZjMzlhNTc2ZGY5MmYzMDljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMzYsNyArMzYsNyBAQAogLy8gQXR0cmli
dXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogCiBjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0yMDMsMTYgKzIwMywxNiBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0K
IAogSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggNDRhYjQ0OWI4MmU4Y2YyY2Q2YjBkM2Q0ZTU3NWI5
YTZjYjZlYzFmNC4uMzY1MWVjMGU4Yzk2MGY5MTIwZDJkZTYwMDQ5ZWY0ODY2OThkMGNmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtNDIsNyArNDIsNyBAQAogLy8g
QXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotdm9pZCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKIH0KIAogdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggOTEzZmZk
YzIxYjU0MjM1MzQwNGU2ZmRmNzkzNzAyZjJlNjY2NGVkMi4uZDJhZjQ0OTY0MGVmMThmNzY4ZDhk
ZmVhZTU0NGNjMjgxNWM5MTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogLy8gQXR0
cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hl
ZFJlYWRvbmx5VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIyMyw0OSArMjIzLDQ5IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCks
IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4g
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShz
dGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dFZhbHVlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBu
YXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwg
MCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q2FjaGVkVmFsdWUo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CmluZGV4IGE3MTdjNzA1N2NhMDA1OTgwN2U5ZjE2MGM3MzVkZjcxN2JjNmFmNDIuLjVlNDRjYmQ1
MWJhNGJmNmE5ZDJjZDE2ZWI1MWM5MzViYWQ1YTRkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApA
QCAtNjAsMjAgKzYwLDIwIEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVk
TG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRh
YmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iaihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMzMyLDEy
MSArMzMyLDEyMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwog
fQogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZz
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25l
ZExvbmdMb25nQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dFVuc2lnbmVkTG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldEltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMi
LCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24obmF0aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24obmF0aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVj
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCAzNDFiMTBhNzRk
Y2MxZWY4N2UxOGU3ODUwNjlmNWQyODYxMjk3ZTUyLi4zYmYyYTJkNTFmZmMyZTgyYjYyM2ZiNjRk
YzI4Mjk4YWU4M2Y0MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNhdHRyaWJ1
dGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAg
LTE0MiwxNiArMTQyLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU2F0dHJpYnV0ZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU2F0dHJpYnV0ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgp
LCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFs
dWUgSlNhdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAppbmRleCBjNWQwMDNjNDU4Y2RmNDNiZGYzYWEz
OWU0NmQwODNlZjI1ZWMyZTg1Li45NmU0Y2M3ODdlNjM5YjZlNjQzZWFhZDc2ZmNmZTlhYzU4MTUz
MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNyZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU3JlYWRv
bmx5Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNs
YXNzIEpTcmVhZG9ubHlQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKQEAgLTEyMywxNiArMTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzcmVhZG9ubHlD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU3JlYWRvbmx5OjpnZXRDb25zdHJ1Y3RvcihzdGF0
ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTcmVh
ZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNyZWFkb25seUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU3JlYWRvbmx5UHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHlQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBk
b21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0
ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQog
CiBKU1ZhbHVlIEpTcmVhZG9ubHk6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3Bw
CmluZGV4IGIyMzJiMDY1ZTk0MjZhNDY3MDgxNmQ1ZmIwOWFhMGU2NzY4YTU3ZGMuLjNlZmE3MTQy
MTkxZTI2OTQ0YzE4YzUzNTVhMGNiMTNlOTFhZjZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19ydW50aW1lLmNwcApAQCAtNjEsNyArNjEsNyBAQCBKU1ZhbHVlIENGaWVsZDo6dmFsdWVGcm9t
SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdCkgY29uc3QKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0
YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1
ZSkgY29uc3QKK2Jvb2wgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJbnN0YW5jZSAqaW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CiAgICAgY29u
c3QgQ0luc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGlu
c3QpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+Z2V0T2JqZWN0KCk7CkBAIC02OSwx
NCArNjksMTcgQEAgdm9pZCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGEKICAgICAgICAgTlBWYXJpYW50IHZh
cmlhbnQ7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIGFWYWx1ZSwgJnZh
cmlhbnQpOwogCisgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKLSAgICAgICAg
ICAgIG9iai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmosIF9maWVsZElkZW50aWZpZXIsICZ2YXJp
YW50KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG9iai0+X2NsYXNzLT5zZXRQcm9wZXJ0eShvYmos
IF9maWVsZElkZW50aWZpZXIsICZ2YXJpYW50KTsKICAgICAgICAgICAgIENJbnN0YW5jZTo6bW92
ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgICAgICB9CiAKICAgICAgICAg
X05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZ2YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19ydW50aW1lLmgKaW5kZXggMTA2NzJlZDk4MWJmOWI2ODQ4ZjU2ZDMzMzM0NzJjZWJjN2VhZDg5
Ny4uMjE5ZmVmZWU0MzFmZDRiZTczMTI2OTZlOTk0MDVhZDg4NmU0ZGEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19ydW50aW1lLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQ0ZpZWxkIDogcHVi
bGljIEZpZWxkIHsKICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50
aWZpZXIoaWRlbnQpIHsgfQogCiAgICAgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmFsdWVU
b0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5z
dGFuY2UqLCBKU1ZhbHVlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE5QSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gX2ZpZWxkSWRlbnRpZmllcjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCAwMDI5NGZhZGQwNThhZDhkMDNkZjdhYjBjYzUy
NGRmYjVkZjIyNmIyLi41ZmU4NWY1ZjRjMTNkYjhmMWI3YmZjNWYwNzVjMGI5YTVkYzlkZTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTUyLDcgKzUyLDcgQEAKIGNs
YXNzIEZpZWxkIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFu
Y2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFs
dWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCB+RmllbGQoKSB7IH0KIH07CkBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgSW5zdGFuY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbnN0YW5jZT4gewogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
fkluc3RhbmNlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgdmlydHVhbEJlZ2luKCkgeyB9CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3MgQXJyYXkg
ewogICAgIGV4cGxpY2l0IEFycmF5KFJlZlB0cjxSb290T2JqZWN0PiYmKTsKICAgICB2aXJ0dWFs
IH5BcnJheSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFs
dWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4KSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3QgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDc2ODk2NmI0
ODk4YTE0YjdjM2U3MGU5ZjkwNTRjZWExOGQ5ZjY2MGYuLmI1OGQxYjYyOWY0ODEwNDE1N2E2Mjg5
MWIyMmU5ZTA1MDJmYWFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE9iamNGaWVsZCA6IHB1YmxpYyBGaWVsZCB7
CiAgICAgT2JqY0ZpZWxkKENGU3RyaW5nUmVmIG5hbWUpOwogICAgIAogICAgIHZpcnR1YWwgSlNW
YWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3Qg
SW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0lu
c3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgSXZhclN0cnVjdFB0ciBfaXZhcjsKQEAgLTc4LDggKzc4LDggQEAgY2xhc3Mg
T2JqY0FycmF5IDogcHVibGljIEFycmF5IHsKIHB1YmxpYzoKICAgICBPYmpjQXJyYXkoT2JqZWN0
U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVBdChFeGVjU3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFs
dWUpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSAqZXhlYywg
dW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVBdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbnQgaW5kZXgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCgpIGNvbnN0OwogICAg
IAogICAgIE9iamVjdFN0cnVjdFB0ciBnZXRPYmpjQXJyYXkoKSBjb25zdCB7IHJldHVybiBfYXJy
YXkuZ2V0KCk7IH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJ
bXAgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIE9iamNGYWxsYmFja09iamVj
dEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBk
ZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRl
eCBhNmM5MDIzODYwOTBkZWIwOTA1MTI2NGVlZGQ5ODg5YTgxZTc4ZTBhLi41OTBmMjI1M2E5MTQy
YjJjZTdlM2RjMWY4MDg2OTM2MWJmN2EwYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGlkIGNvbnZlcnRW
YWx1ZVRvT2JqY09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0
dXJuIFt3ZWJTY3JpcHRPYmplY3RDbGFzcygpIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTp2YWx1
ZSBvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9vdE9iamVjdDpyb290T2JqZWN0
LmdldCgpXTsKIH0KIAotdm9pZCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0
Citib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKIHsKICAgICBpZCB0
YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFuY2Up
KS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmplY3Qo
ZXhlYywgYVZhbHVlKTsKQEAgLTEzOCw5ICsxMzgsMTEgQEAgdm9pZCBPYmpjRmllbGQ6OnNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwg
SlMKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICAgICAgT2Jq
Y0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2Fs
RXhjZXB0aW9uKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIH0KIApAQCAtMTUyLDE2ICsxNTQsMTYgQEAgT2JqY0FycmF5OjpPYmpj
QXJyYXkoT2JqZWN0U3RydWN0UHRyIGEsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3Qp
CiB7CiB9CiAKLXZvaWQgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0FycmF5Ojpz
ZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFW
YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIVtfYXJyYXkuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihpbnNlcnRPYmplY3Q6YXRJbmRleDopXSkgewogICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXJyYXkgaXMgbm90
IG11dGFibGUuIikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkgewogICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIklu
ZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICAvLyBBbHdheXMgdHJ5IHRvIGNvbnZlcnQgdGhl
IHZhbHVlIHRvIGFuIE9iakMgb2JqZWN0LCBzbyBpdCBjYW4gYmUgcGxhY2VkIGluIHRoZQpAQCAt
MTcwLDggKzE3MiwxMCBAQCB2b2lkIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpCiAKICAgICBAdHJ5IHsKICAg
ICAgICAgW19hcnJheS5nZXQoKSBpbnNlcnRPYmplY3Q6b1ZhbHVlLm9iamVjdFZhbHVlIGF0SW5k
ZXg6aW5kZXhdOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlv
biogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCAiT2JqZWN0aXZlLUMgZXhjZXB0aW9uLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtMjIxLDggKzIyNSw5IEBAIGJvb2wgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
CiB7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBlZjk5MjQ4Mjc4NmY3MjVkNzBlZTFl
ZGMzZTA3MGNmNmI3ZjhjYzVlLi5jNWIzYzRmN2U3YTIxNzkyNzEyMWIzYzdlN2MwZjFhNDk2NzFi
NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0xMTEsMzEg
KzExMSwyOSBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsCiAgICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsK
IH0KIAotdm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lQXJyYXkqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4
LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGlu
ZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12
b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCitib29sIFJ1bnRpbWVBcnJh
eTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChpbmRleCA+PSB0aGlzT2Jq
ZWN0LT5nZXRMZW5ndGgoKSkgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9yIikpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgdGhpc09iamVjdC0+
Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAg
cmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBp
bmRleCwgdmFsdWUpOwogfQogCiBib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmgKaW5kZXggNThiYTA1OTZlNjQ5MWE4NDQ2MmJkYzZlZWQ4NjRjNTlhMjU5MmVjMS4u
MDE4YzEzMjc4ZGJhM2RkMDMxNzFlNTNlZmMwYWQ3ZGYwZTEwN2U5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC01Niw4ICs1Niw4IEBAIGNsYXNzIFJ1bnRpbWVBcnJh
eSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9p
ZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAppbmRleCBmN2Y5OGJmOGMwZjUxNWUyYTk4ZWM2ZjllNzAxNjM5ODRlNjc2NjQ1
Li5hNTczZTA1ZDc1OWIwNzU3MGQyNjIxZDhlNjI2MDM2NDFjYmI0ZWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTE2MSwyNSArMTYxLDI3IEBAIGJvb2wg
UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSAqZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBSdW50
aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7CiAgICAgICAg
IHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5j
ZSA9IHRoaXNPYmplY3QtPm1faW5zdGFuY2U7CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKICAg
ICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KKyAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwogICAgIEZpZWxkICphRmllbGQgPSBpbnN0YW5jZS0+Z2V0Q2xhc3MoKS0+ZmllbGROYW1l
ZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlLmdldCgpKTsKICAgICBpZiAoYUZpZWxkKQotICAgICAg
ICBhRmllbGQtPnNldFZhbHVlVG9JbnN0YW5jZShleGVjLCBpbnN0YW5jZS5nZXQoKSwgdmFsdWUp
OworICAgICAgICByZXN1bHQgPSBhRmllbGQtPnNldFZhbHVlVG9JbnN0YW5jZShleGVjLCBpbnN0
YW5jZS5nZXQoKSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKCFpbnN0YW5jZS0+c2V0VmFsdWVPZlVu
ZGVmaW5lZEZpZWxkKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKQotICAgICAgICBpbnN0YW5j
ZS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
ICAgICByZXN1bHQgPSBpbnN0YW5jZS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgaW5zdGFuY2UtPmVuZCgpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
aAppbmRleCBiM2I2NDBhY2M1NGYzNDhkYzVhZmU5MmM1ZjM4ZmU2MjI5NDg1ZjgxLi44MWQ0ZWJk
M2I0ZGJiNzA5OTExNWRhMTAyODJiMjlmYmZmYjE4NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBS
dW50aW1lT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDEzZTMyYmE2MjBlMzUwN2Uw
NDJhOTBlODE3NDQzZDkzYWY2M2I2MDIuLmFmYmExMDIwZDk1ZGFlYjYzZTE3YzdmYjkzMjE0MWFl
OGU5NGQ4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUHJveHlJbnN0YW5jZSA6IHB1Ymxp
YyBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZSB7CiAgICAgSlNDOjpCaW5kaW5nczo6RmllbGQqIGZp
ZWxkTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGZpZWxkVmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCopIGNvbnN0Owot
ICAgIHZvaWQgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGlu
Z3M6OkZpZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKKyAgICBib29sIHNldEZpZWxkVmFsdWUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCosIEpTQzo6SlNWYWx1
ZSkgY29uc3Q7CiAgICAgCiAKICAgICBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkqIGluc3Rh
bmNlUHJveHkoKSB7IHJldHVybiBtX2luc3RhbmNlUHJveHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDljZDBmYmMxYjRj
MjU0ZGE1NGM0MTQ2ZWRlMjA1OGQ3Y2MwYWRjMzIuLjY3MTRlOGNmNGFiMjc1MzYwZGQ2YTA5OTE0
NmM1NGQzMDc1YWFiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1Zh
bHVlKSBjb25zdDsKICAgICAKICAgICB1aW50NjRfdCBtX3NlcnZlcklkZW50aWZpZXI7CiB9OwpA
QCAtOTEsOSArOTEsOSBAQCBKU1ZhbHVlIFByb3h5RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5maWVsZFZhbHVlKGV4ZWMs
IHRoaXMpOwogfQogICAgIAotdm9pZCBQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgdmFsdWUpIGNv
bnN0Citib29sIFByb3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKLSAgICBz
dGF0aWNfY2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5zZXRGaWVsZFZhbHVl
KGV4ZWMsIHRoaXMsIHZhbHVlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUHJveHlJ
bnN0YW5jZSo+KGluc3RhbmNlKS0+c2V0RmllbGRWYWx1ZShleGVjLCB0aGlzLCB2YWx1ZSk7CiB9
CiAKIGNsYXNzIFByb3h5TWV0aG9kIDogcHVibGljIEpTQzo6QmluZGluZ3M6Ok1ldGhvZCB7CkBA
IC00MTYsMTAgKzQxNiwxMCBAQCBKU0M6OkpTVmFsdWUgUHJveHlJbnN0YW5jZTo6ZmllbGRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCkgY29ucwogICAgIHJldHVybiBt
X2luc3RhbmNlUHJveHktPmRlbWFyc2hhbFZhbHVlKGV4ZWMsIChjaGFyKilDRkRhdGFHZXRCeXRl
UHRyKHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSksIENGRGF0YUdldExlbmd0aChyZXBseS0+bV9yZXN1
bHQuZ2V0KCkpKTsKIH0KICAgICAKLXZvaWQgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QK
K2Jvb2wgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIW1faW5zdGFu
Y2VQcm94eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgdWludDY0X3Qgc2VydmVySWRlbnRpZmllciA9IHN0YXRpY19jYXN0PGNvbnN0IFByb3h5Rmll
bGQqPihmaWVsZCktPnNlcnZlcklkZW50aWZpZXIoKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQg
PSBtX2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0SUQoKTsKQEAgLTQzNCwxMCArNDM0LDExIEBA
IHZvaWQgUHJveHlJbnN0YW5jZTo6c2V0RmllbGRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZpZWxkKiBmaWVsZCwgSlNWYWx1ZSB2CiAgICAgaWYgKG1faW5zdGFuY2VQcm94eSkKICAgICAg
ICAgbV9pbnN0YW5jZVByb3h5LT5yZWxlYXNlTG9jYWxPYmplY3QodmFsdWUpOwogICAgIGlmIChr
ciAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIHdhaXRGb3JSZXBseTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJv
b2xlYW5SZXBseT4ocmVxdWVzdElEKTsKICAgICBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogdm9pZCBQcm94eUluc3RhbmNlOjppbnZhbGlkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApp
bmRleCBhOTA1YjNkZjBiNjhhYzQ4ZWUyZmExZmNmMmE4N2YwMzE1YWJkN2JkLi5kNTYxYWUxNDhj
MjJmNTk3ZDdmMWFlODRjYjdkMGRmOTFjMGNhMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0y
OTcsMjcgKzI5NywyNyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCitib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JikKIHsKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9i
amVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKICAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIE5QSWRlbnRpZmllciBucElkZW50aWZpZXIgPSBucElk
ZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwogICAgIC8vIElmIHRoZSBwcm9w
ZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbnBJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIXRoaXNPYmplY3QtPm1f
bnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkgfHwgIXRoaXNPYmplY3QtPm1fbnBPYmplY3Qt
Pl9jbGFzcy0+aGFzUHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVy
KSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHRocm93IGFuIGV4Y2VwdGlvbiBoZXJl
PwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVydHkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTlBWYXJpYW50IHZhcmlhbnQ7
CiAgICAgdGhpc09iamVjdC0+bV9vYmplY3RNYXAtPmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQo
ZXhlYywgdmFsdWUsIHZhcmlhbnQpOwpAQCAtMzI3LDkgKzMyNywxMCBAQCB2b2lkIEpTTlBPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSgogICAgIC8vIHRoZSBjYWxsIGhhcyBmaW5pc2hlZC4KICAgICBOUFJ1bnRpbWVP
YmplY3RNYXA6OlBsdWdpblByb3RlY3RvciBwcm90ZWN0b3IodGhpc09iamVjdC0+bV9vYmplY3RN
YXApOwogCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICB7CiAgICAgICAgIEpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KHRoaXNP
YmplY3QtPm1fbnBPYmplY3QsIG5wSWRlbnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICByZXN1
bHQgPSB0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KHRoaXNPYmpl
Y3QtPm1fbnBPYmplY3QsIG5wSWRlbnRpZmllciwgJnZhcmlhbnQpOwogCiAgICAgICAgIE5QUnVu
dGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogCkBA
IC0zMzcsNiArMzM4LDcgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICB9CiAKICAgICBy
ZWxlYXNlTlBWYXJpYW50VmFsdWUoJnZhcmlhbnQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCBhNmJi
ZjdjODdjNGM5OGE0NmNlNTllY2VmYjM2NjBlMDdlYWIyNGU2Li44YmFmZWIwNjBhMjEwNjZkOGVh
YTYwODc0YzAzYWM5OWYwY2Y0YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTg1LDcgKzg1LDcgQEAg
Y2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwq
LCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273715</attachid>
            <date>2016-03-11 02:59:51 -0800</date>
            <delta_ts>2016-03-11 03:06:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160311195937.patch</filename>
            <type>text/plain</type>
            <size>415685</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTlkZGY1NTlmNWNlZTYxY2UxMmFhZDE2NmI4M2JkYWZiZjBkYTJmLi5mYzBiYTE1ODhiYjMxYmE5
ZDU0MTZlOTBiODQ2YTY5NGQ3ZDkzMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTcgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVj
ZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFJlZmxlY3Quc2V0LgorICAgICAgICBUaGUgY2hh
bGxlbmdlIGluIHRoaXMgcGF0Y2ggaXMgUmVmbGVjdC5zZXQgcmVxdWlyZXMgYm9vbGVhbiByZXN1
bHQgb2YgW1tTZXRdXSwKKyAgICAgICAgdGhpcyBpcyBub3QgcHJvcGFnYXRlZCBpbiB0aGUgcHJl
dmlvdXMgSlNDIHB1dCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgdGhlIHB1dCBhbmQgcHV0QnlJbmRleCBzaWduYXR1cmUgZnJvbSBgdm9pZCBwdXQoLi4uKWAg
YW5kIGB2b2lkIHB1dEJ5SW5kZXgoLi4uKWAgdG8gYGJvb2wgcHV0KC4uLilgIGFuZCBgYm9vbCBw
dXRCeUluZGV4KC4uLilgLAorICAgICAgICBtb3JlIGNvbnNpc3RlbnQgc3R5bGUgdG8gdGhlIEVD
TUEyNjIgc3BlYydzIFtbU2V0XV0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBzbyBt
YW55IHBhcnQgb2YgV2ViS2l0LiBCdXQgYWxtb3N0IGFsbCB0aGUgY2hhbmdlcyBhcmUgbWVjaGFu
aWNhbCBvbmVzLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBzdXBw
b3J0IHJlY2VpdmVyIG1vZGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICBUaGlzIHdpbGwgYmUg
c3VwcG9ydGVkIGluIHRoZSBzdWJzZXF1ZW50IHBhdGNoWzFdLgorCisgICAgICAgIFsxXTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NAorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleCk6Cisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyU2NvcGU6OnB1dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAg
ICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5j
cHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dElu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZp
cm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dEdldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpkZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlC
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAg
ICAgIChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAg
KEpTQzo6bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21t
b24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICog
cnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90
Lmg6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdFNldCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAo
SlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkpOgorICAgICAgICAoSlNDOjpT
cGFyc2VBcnJheUVudHJ5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgICogdGVz
dHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanM6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHJlY2VpdmVyQ2FzZS5vYmpl
Y3QyLnNldCBDb2NvYSk6CisgICAgICAgIChyZWNlaXZlckNhc2UpOgorICAgICAgICAocHJveHlD
YXNlKToKKyAgICAgICAgKG9iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChv
YmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcnJheUNhc2Uuc2V0IGdldCBzaG91
bGRCZSk6CisgICAgICAgIChhcnJheUNhc2UuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5
QnVmZmVyQ2FzZS5zZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5QnVmZmVyQ2FzZS5n
ZXQgc2hvdWxkQmUpOgorICAgICAgICAoc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChnZXQg
c2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRDYXNlLnRlc3QxKToKKyAgICAgICAgKGFyZ3Vt
ZW50Q2FzZS50ZXN0Mik6CisgICAgICAgIChhcmd1bWVudENhc2UudGVzdDMpOgorICAgICAgICAo
YXJndW1lbnRDYXNlLnRlc3Q0LnNldCBnZXQgc2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRD
YXNlLnRlc3Q1LmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVz
dDEpOgorICAgICAgICAoYXJndW1lbnRTdHJpY3RDYXNlLnRlc3QyKToKKyAgICAgICAgKGFyZ3Vt
ZW50U3RyaWN0Q2FzZS50ZXN0Myk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDQu
c2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDUuZ2V0
IHNob3VsZEJlKToKKyAgICAgICAgKHN0cmluZ09iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6
CisgICAgICAgIChzdHJpbmdPYmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChjdXN0
b21TZXR0ZXIudGVzdDEpOgorICAgICAgICAoY3VzdG9tU2V0dGVyLnRlc3QyKToKKyAgICAgICAg
KGN1c3RvbVNldHRlci50ZXN0Myk6CisgICAgICAgIChjdXN0b21TZXR0ZXIpOgorICAgICAgICAo
cmVnRXhwTGFzdEluZGV4KToKKyAgICAgICAgKGZ1bmN0aW9uQ2FzZS5mdW5jKToKKwogMjAxNi0w
My0wOCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAg
ICBIb3cgd2UgbG9hZCBuZXcudGFyZ2V0IGluIGFycm93IGZ1bmN0aW9ucyBpcyBicm9rZW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3NzgwZjczYTg0ZWMwZWFjMmFiNWIzMmM4NmMzZTk0ZjliN2JlOTFjLi5lODU0
NjRjN2NkNDkxZTZjZDYzMzJjYWEzOThlZmE3OTlhNTI3NWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkzIEBACisyMDE2LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2Vp
dmVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEN1c3RvbVNldHRlciByZXR1cm5zIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhl
IHJlc3VsdCBvZiBbW1NldF1dLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhpcyBjaGFuZ2UsIHRo
aXMgcGF0Y2ggbW9kaWZpZXMgdGhlIENvZGVHZW5lcmF0b3JKUyBhbmQgdGVzdCByZXN1bHRzLgor
CisgICAgICAgIEN1cnJlbnRseSwgRE9NIGVsZW1lbnRzJyBbW1NldF1dIHJldHVybiB0cnVlIHdo
ZW4gdGhlIHNldHRlciBpcyBmb3VuZC4KKyAgICAgICAgVGhpcyBpcyBnb29kIGZvciB0aGUgZmly
c3Qgc3RlcC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERl
bGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyb3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1
dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERl
bGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFn
ZTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlUldDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
Tm9kZU5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25k
ZXRlcm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1p
bmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVm
bGVjdGVkU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVm
bGVjdGVkQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVj
dGVkVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFy
cmF5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqT25mb28pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIx
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vu
c2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRnZS9jL2Nf
cnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9J
bnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpw
dXQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNG
aWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNB
cnJheTo6c2V0VmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OnB1dCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAg
ICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6cHV0QnlJbmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
UnVudGltZU9iamVjdDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoK
KwogMjAxNi0wMy0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBFeHRyYWN0IEV2ZW50UGF0aC5oL2NwcCBvdXQgb2YgRXZlbnREaXNwYXRjaGVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDkyMWExZmQzZDFjMzEyNDI3ZDI2ZWRmMjZmMWM1NDRjZWM4M2M0ZDQu
LjA4MGRkMDAwOTY2ZTBmZmU5ZmU4ODI0NzJjZDQxY2Y0NjA0OWYzZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5zZXQgd2l0
aG91dCByZWNlaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTUwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBcyB0aGUgc2FtZSB0byBOUEpTT2JqZWN0LCB3ZSBqdXN0IHByb3BhZ2F0
ZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRQ
cm9wZXJ0eS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm94eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpQcm94
eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKToKKwogMjAxNi0wMy0wOSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgcnVudGltZSBmbGFncyBmb3Igc2hhZG93
IERPTSBhbmQgY3VzdG9tIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI3OGNmODc4OGNkYmY0NDI2
ZDc4MmZjMzQ4Mzk0M2M0MWU4NDkyYi4uNDQ5YTFmOWY0Y2VlMjc3ZWI2MDRmY2IxMWNlZmQ0ZTRi
NDIyMWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTAzLTExICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2VpdmVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5QSlNPYmplY3Q6OnNldFByb3BlcnR5IG1h
eSBjYWxsIGBtZXRob2RUYWJsZSgpLT5wdXRgIG9wZXJhdGlvbiwgYnV0IHdlIGludGVudGlvbmFs
bHkgZG8gbm90IHByb3BhZ2F0ZSBpdCB0byB0aGUgY2FsbGVyJ3MgOjpwdXQuCisgICAgICAgIElu
IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3ZSBqdXN0IHVzZSB0aGUgcmVzdWx0IG9mIDo6
c2V0UHJvcGVydHkgY2FsbC4KKyAgICAgICAgVGhpcyBpcyBgdHJ1ZWAgd2hlbiA6OnNldFByb3Bl
cnR5IGF0dGVtcHRzIHRvIGNhbGwgYG1ldGhvZFRhYmxlKCktPnB1dGAuCisgICAgICAgIEluIDo6
c2V0UHJvcGVydHksIGFmdGVyIGNhbGxpbmcgYG1ldGhvZFRhYmxlKCktPnB1dGAsIDo6c2V0UHJv
cGVydHkgZnVuY3Rpb24gY2xlYXJzIHRoZSBleGNlcHRpb24gc3RhdGUuCisgICAgICAgIFNvIHRo
aXMgaXMgbm90IHRoZSBzYW1lIHNlbWFudGljcyB0byB0aGUgc2ltcGxlIGRhdGEgcHJvcGVydHkg
c3RvcmUuIFJhdGhlciwgdGhpcyBpcyBsaWtlIHRoZSBhY2Nlc3Nvci4KKyAgICAgICAgSW4gRUNN
QTI2MiBbW1NldF1dLCBpdCByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYSBzZXR0ZXIuIFNvIHdl
IGp1c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiA6OnNldFByb3BlcnR5LgorICAgICAgICBU
aGlzIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGEgc2V0dGVyIGZvciB0aGUgZ2l2ZW4gW1tTZXRd
XSBvcGVyYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnB1dCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKwogMjAxNi0wMy0w
OSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQXJ0aWZhY3RzIHdoZW4gdXNpbmcgd2ViIHZpZXcgYmFja2dyb3VuZCBjb2xvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBhZGRkMjE5
ODYzMzllM2MxZDBiMWU0MGNlMmJhZTdmN2NkYjdmNzZkLi5lOTU2M2Y1NGNlYThiMjYzYjE0MzM1
NjcyMWQ0Y2RkZDc5YzVlNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaApAQCAtMTgxLDggKzE4MSw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Qg
OiBwdWJsaWMgUGFyZW50IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA5NTIwMzlkY2NiODYyMjIwYzUzNjM0ZGM2
ZjRjYzZhNDdlNjVkNmY3Li5hNTUzNzIzNGJiMzJjYTY4NmRkMDZiMmFmZTlhMDdhOWQwMjU3ZjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaApAQCAtMjIyLDcgKzIyMiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMjQ0LDEzICsyNDQsMTMg
QEAKICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNW
YWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFs
dWVzLT5nZXQobmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0
eSA9IGVudHJ5LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7
CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNzIs
OSArMjcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVy
cmlkZSBwcm9wZXJ0eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjg0LDcgKzI4Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lk
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4
dFJlZiBjdHggPSB0b1JlZihleGVjKTsKQEAgLTMwNiwxMyArMzA1LDEzIEBACiAgICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQg
fHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0
aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMp
KSB7CiAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1
ZXMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkg
PSBlbnRyeS0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTMyMyw3
ICszMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0zMzEsNyArMzMwLDcgQEAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0
aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rp
b25zKGV4ZWMpKSB7CiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkg
PSBzdGF0aWNGdW5jdGlvbnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAg
ICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5j
cHAKaW5kZXggYzNlZmJkNTZkZDcwZGVhY2EzNjMzOTI0YTkyMjlkMzYxMzkzMjAxNS4uMzY1MDI0
ZTg4ZjI2YWUxNDZhOWU4YmE0Y2MyZjRjYmQ1YTM1NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtOTgsMTUgKzk4LDE1IEBA
IGJvb2wgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBE
ZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29w
ZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3Bl
LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNT
Y29wZSgpKTsKICAgICBzbG90LnNldFRoaXNWYWx1ZShKU1ZhbHVlKHRoaXNPYmplY3QpKTsKLSAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
IAogYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZlZjYwYzg5OWY3ZjE0ODNl
MzJjYzdhODM4MzNlMGFmOTQwNDcyZGIuLmUzNGY0OTdkN2ZiMzMzYWFlZTc2MDkyNDM4NjRmMzVj
MGE3OGE1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVj
dCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
NjI5NDFkNDlmMTczOTQ5ODdhODY0M2U0OWM3NzU4MmE2ZTZmYThkZS4uYTVjZjViMGQxOGExMjk2
ZWNjMDZiOGQ3MTYyNDIzNmVhYjJhODFkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleCwgc2xvdCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9f
Q1JBU0ggdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJv
b2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90JikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAw
NDUwYjUzYThmNzBkZmE2YjQ1MWY2ZDY3Yzc5NjQ3ZDA0YmI0MWIzLi41OWE1Nzg4ZjAzY2Y5ZDdi
YTM2ODc3Yzk0NGRhNTA3N2IyN2MzM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaApAQCAtNTAsMTAgKzUwLDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAg
ICAgdHlwZWRlZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRy
IGdldENvbnN0cnVjdERhdGE7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgdHlwZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsKIAotICAgIHR5cGVkZWYg
dm9pZCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB0eXBlZGVm
IGJvb2wgKCpQdXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJ
bmRleEZ1bmN0aW9uUHRyIHB1dEJ5SW5kZXg7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQ
cm9wZXJ0eUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAK
aW5kZXggODI0MWQ2ZTBjMDc1NjQ0NzFjNWE5ZGE1MmUxNmQxYmE3M2JlZjk5NS4uNDgxZjE2YjNl
OWVlYWZiYzUzZTdkNTE4NGVjNDU0NDcxYWQyYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm8KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KIAotdm9pZCBDbG9uZWRBcmd1bWVudHM6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIENsb25lZEFyZ3VtZW50
czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1
bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE3OCwxMSArMTc4LDEwIEBAIHZvaWQgQ2xvbmVkQXJn
dW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBp
ZGVudCwgSlNWCiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vz
c2FyeShleGVjKTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gU2hh
ZG93IHRoZSBnaXZlbiBQdXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNoaW5nLgotICAgICAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudCwgdmFsdWUsIGR1bW15KTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmgKaW5kZXggOGU3MTNkNWM2ZmE1Y2ExODQxMzRiMDUyYjJkNTg5OWEyNjc3YTMw
ZS4uNWQyMjIxODNjOWU3MDgzMjk0YjE0MTc2ZGE0ZWY1NjE5N2NiYjNmZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTYyLDcgKzYy
LDcgQEAgY2xhc3MgQ2xvbmVkQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1
Y2UzYTM2OTJkMmIwNmM0MzYzNTNmMjJhMmYzN2RmYjhhZjdjZjNjLi44NzM2ZDE5MjUzMDE0Njky
Yjc0MWMyZDg2ODJjMDQwYThjYzU5OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKQEAgLTM3LDE0ICszNywyNSBAQAog
CiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21H
ZXR0ZXJTZXR0ZXIiLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlclNldHRl
cikgfTsKIAotdm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBj
dXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIGJhc2UsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29s
IGlzQWNjZXNzb3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFT
U0VSVChzZXR0ZXIpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0dGVyKGV4ZWMsIEpTVmFsdWU6OmVu
Y29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICAvLyBBbHdheXMg
cmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBzZXR0ZXIgYW5kIGl0IGlzIG9ic2VydmVkIGFzIGFu
IGFjY2Vzc29yIHRvIHVzZXJzLgorICAgIGlmIChpc0FjY2Vzc29yKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGN1c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29y
LCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3Rv
bUdldHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPnNldHRlcigpOworICAgIC8vIFJl
dHVybiBmYWxzZSBzaW5jZSB0aGVyZSBpcyBubyBzZXR0ZXIuCiAgICAgaWYgKCFzZXR0ZXIpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNBY2Nlc3Nv
cikKICAgICAgICAgdGhpc1ZhbHVlID0gYmFzZTsKLSAgICBzZXR0ZXIoZXhlYywgSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOworICAgIHJldHVybiBj
YWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIHNldHRlciwgaXNBY2Nlc3NvciwgdGhpc1ZhbHVlLCB2YWx1
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAppbmRleCBkZGRkOGM2ZmI0M2U3OWEzYmUy
OTJlZDJlODQzNzYzN2ViNmFkMzg4Li4yNGJmZjg4NGUwYmU4MGQ4MGUyYWE5ZGZiZTViMTI2ZjNm
YzliN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21H
ZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21H
ZXR0ZXJTZXR0ZXIuaApAQCAtNzAsNyArNzAsOCBAQCBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9Owog
Ci1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RC
YXNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29s
IGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21T
ZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOworSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
Y3VzdG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4
IDY3ZjFiMDM0NWQ3MWI4ZDMzNjJmNjZiYjY1ZTJkY2YzYTM1ZDJhYTQuLmVkY2M2ZjFiOThkNmRh
ZGY4ODk3ZThhZjJmZjAyMjQ0NTI5YjNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgR2Vu
ZXJpY0FyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oCmluZGV4IDliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2Uy
NDZkZWUuLmQyZWIzNzExNTIxMjY0NWMzMTZmNzlkNDJlMjNiNzgwZmRkYmVkZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaApAQCAtOTcsNyArOTcsNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgot
dm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+
KGNlbGwpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDgsMjggKzEwOCwyNyBAQAog
ICAgICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
KSB7CiAgICAgICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAgICAgUHV0
UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hlYWJsZSwg
c28gd2Ugc2hhZG93IHRoZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgotICAgICAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwg
dmFsdWUsIGR1bW15KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFj
Y2Vzc0luZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgotdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxUeXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgpKSB7CiAgICAgICAgIHRoaXNPYmpl
Y3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5
SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyY2Q2NmU1Y2Q0
MmZkMDFkYjUyZGUwZDc2YmNmNGQyMTkxZWY3Y2I5Li44NzMwNzk0YTM0MjhmNmQ1ZWE4ZTlhMmI4
Y2JhMjE0YzE3YmM4NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQogICAgIHJl
dHVybiBjYWxsKGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0
KCkpOwogfQogCi12b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkK
K2Jvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBn
ZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEdl
dHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRl
clNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewog
ICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0
KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwpAQCAtMTAzLDYgKzEwMyw3IEBA
IHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBn
ZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxs
RGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5o
CmluZGV4IGNkMjA0MDI4ZWY5Y2FlMjlmODIxNGZjNmJmYWYzYWViNTU2ZjNmOTEuLjJiMjJiM2Uw
YjBjMDBjOTI3YmY1Y2JkOTAwNDljZmU5MThlNTE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5saW5lIEdl
dHRlclNldHRlciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKIH0KIAogSlNWYWx1ZSBj
YWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIp
OwotSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKK0pTX0VYUE9S
VF9QUklWQVRFIGJvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFs
dWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGFmZGJl
MGRlNzZlZDc5YTJjNzM0M2RhN2Y3MWIwNmE3ZWJlZDFhNGYuLjFjMjkwYzgyN2MzM2ViN2E1ZDlk
MGE5MTc4MzI1MDMxZWNhODg1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAg
ICAgLy8gYS4gSWYgdGhlIFtbVmFsdWVdXSBmaWVsZCBvZiBEZXNjIGlzIGFic2VudCwgdGhlbgog
ICAgICAgICAvLyBhLmkuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRlZmF1bHQg
W1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBBIHBhc3Np
bmcgImxlbmd0aCIsIERlc2MsIGFuZCBUaHJvdyBhcyBhcmd1bWVudHMuCiAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1l
Y2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5
Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpOwogICAgICAgICAvLyBmcm9tIEVTNS4xIDguMTIu
OSAxMC5hLgogICAgICAgICBpZiAoIWFycmF5LT5pc0xlbmd0aFdyaXRhYmxlKCkgJiYgZGVzY3Jp
cHRvci53cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBj
aGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOwpA
QCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiB9CiAKIC8vIEVDTUEg
MTUuNC41LjEKLXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCitib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+
KGNlbGwpOwogCkBAIC0xOTgsMTMgKzE5OCwxMiBAQCB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQog
ICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAg
ICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVu
Z3RoKSkgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAg
ICB9CiAKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQpAQCAtNjQ0LDcgKzY0Myw4IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZTogewogICAgICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBsZW5ndGgoKTsK
LSAgICAgICAgaWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xk
TGVuZ3RoLCB2YWx1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgaWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xk
TGVuZ3RoLCB2YWx1ZSwgdHJ1ZSwgcHV0UmVzdWx0KSkgewogICAgICAgICAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSAmJiBvbGRMZW5ndGggPCAweEZGRkZGRkZGdSkKICAgICAgICAgICAg
ICAgICBzZXRMZW5ndGgoZXhlYywgb2xkTGVuZ3RoICsgMSwgdHJ1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggOWYyNzM4
MmRlYmQ3MTc1YjUwOWMxZGZhNDk1MWI5ZWJkMmNiODJlNi4uY2NmM2JlZTNkY2E0YjMzYWRhMTM2
YzQyZGU3MDFjZDZjYmE1YTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApp
bmRleCAzNTlhZTQ3YTUwYmU3ZWMyODAyODcwYzk2Nzc0ODQ2NDMwZTM0NGIxLi42ZGRlNGM3ZGZm
Y2EzMjMzMDBjNzg1Nzg3YTUyNzYwYWFjNTA2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzksMTggKzc5LDE2IEBAIGJvb2wg
SlNBcnJheUJ1ZmZlcjo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotdm9pZCBKU0FycmF5QnVmZmVyOjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAg
ICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNB
cnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4oY2VsbCk7CiAg
ICAgCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxl
bmd0aCkgewotICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVt
cHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ5dGVMZW5ndGgpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xv
dC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJy
YXkgYnVmZmVyIHByb3BlcnR5LiIpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpT
QXJyYXlCdWZmZXI6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IGQ2MzRkNzM2M2ZlNGE1MDhiOGFiOTgwY2Zi
MDY1ZjMxMWE3YWE2ZTguLmY3Njc1MzgzNzg0NGYwYTZmYjVhYzdjNDljYTI5YTM0NTM0Mzc5MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDNiZmNhZjE1MjE5OTI1YjkzZWQ3ODdmNDE1MDFj
OWI3N2JiNTViMTEuLmQ0YjVjYzBjNDM2YjU4MWJlYjE2OTQ4Y2E3MzJmMDA2MWY2MjFjODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKQEAgLTE2NCwxNyArMTY0LDE1IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCi12b2lkIEpTQXJyYXlCdWZm
ZXJWaWV3OjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQoCiAgICAgSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsCiAgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXlCdWZmZXJW
aWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7Ci0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKSB7Ci0gICAg
ICAgIHJlamVjdChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0
ZSB0byByZWFkLW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVm
ZmVyKQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJB
dHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsK
ICAgICAKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6ZGVmaW5l
T3duUHJvcGVydHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaAppbmRleCA1MjNhMjAwZmJhMmQ3NzJjMmI3M2YyZDRjNWZjNjVjNzEyZjZi
OWJmLi5iMmNmNWEyYjE5OTllNWQ3ZWEyZThhNDg3NWViZTQ3MzhlMDg4YjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CiAgICAgCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAyYmYxZDhm
NmMwMTE0ODcxNTI1NmQyNmFiMDllNWUzNzU2MWM1OTUxLi43NTQ4N2Q2ZjM5NjlhNTZjNjE0NWRi
MDkwNTJlNzZiMmE2ZTY3MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcApAQCAtMTI4LDE5ICsxMjgsMTcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5
bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogCiAvLyBFQ01BIDgu
Ny4yCi12b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRUb1ByaW1p
dGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXRUb1By
aW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRl
cnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXpl
UHJvdG90eXBlKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7
CiAgICAgICAgIGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUp
KSB7CkBAIC0xNDgsNyArMTQ2LDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAg
ICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTYwLDE5ICsxNTgsMTUgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAo
Z3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywg
KnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RT
dHJpY3RNb2RlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8g
U3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogCi0gICAgICAgICAgICBpZiAoZ3MuaXNDdXN0
b21HZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhl
YywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgp
LCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nv
ciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CiAKICAgICAgICAgICAgIC8vIElmIHRo
ZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAog
ICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFr
IGhlcmUuCkBAIC0xODEsMzQgKzE3NSwzNSBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogCiAg
ICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAg
aWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwotICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6
cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1ZhbHVlOjpwdXRU
b1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhp
cywgc2hvdWxkVGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewogICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KHByb3RvdHlwZS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlw
ZShleGVjLCAqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAg
ICByZXR1cm47CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHJvdG90eXBl
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0
aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAppbmRleCBjYmJmMjYxZmFmMzA0OTliZWNmMzgxMTQ3ZmM3OGU0OTg1MDRlZjg2Li5hZGE4MDI5
N2I4NDcxZjZiYjNkOTBlODQyNjI5NGQ5NmQ3NGRmZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yODYsMTEgKzI4NiwxMSBAQCBjbGFzcyBKU1Zh
bHVlIHsKIAogICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHZvaWQgcHV0SW5saW5l
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CisgICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0
aXZlQnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1
ZSB0b1RoaXMoRXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA4YTUxMGI0MTA1
OGRjNTdlMzY4OTU3MjRjNjk1Y2VkZWQzNDZjNzBhLi5lZTNhMTZlNDI0NDBlNjlhMWIzNjhiN2Uy
NDE2M2E4ZjhiYjU4MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgwNyw0MCArODA3LDM2IEBAIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0
YXRpY19jYXN0PGRvdWJsZT4ocHJvcGVydHlOYW1lKSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU1Zh
bHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpw
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwo
KSkpIHsKLSAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9Q
cmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICByZXR1cm4g
YXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1
ZTo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAo
VU5MSUtFTFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoIWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNDZWxsKiBjZWxsID0gYXNDZWxs
KCk7CiAgICAgYXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0OwotICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAg
ICAgIEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShwdXRNZXRob2Qg
PT0gSlNPYmplY3Q6OnB1dCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHV0UHJvcGVydHlT
bG90IG90aGVyU2xvdCA9IHNsb3Q7Ci0gICAgcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIG90aGVyU2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKICAgICBzbG90ID0gb3Ro
ZXJTbG90OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAg
ICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAg
ICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVu
ZGVmaW5lZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApp
bmRleCA4ODA3YTdkMDg0YWY0NzM3NGZkZDBkY2M4ZDBkMjc4NTk0Mjc0NDJkLi4yZGQyZmZhNTMw
NDMyNDQyYmQ0YWM1MzQ1MmMxZjZkYzM2NTU3MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEwOCwyNSArMTA4LDIzIEBAIENvbnN0cnVjdFR5cGUgSlND
ZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgSlNDZWxsOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2VsbDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5p
c1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5w
dXRUb1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2wo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgaWRl
bnRpZmllciwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxs
LT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRl
bnRpZmllciwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBz
bG90KTsKIH0KIAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCitib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7CiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAg
SlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMs
IGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
c09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9v
bCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKaW5kZXggMTMyMTc0NWFhMjJhYmRhZjIxZDM2YTVjNTY5YzUwNjU2ZTZlYzYwYy4uNjc3YzY1
MTYyYzk0NTNjYjFmNjk4OTZiYWU0YzdkZDRiZWY3MTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBjbGFzcyBKU0NlbGwgewogICAg
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFi
bGUqIG1ldGhvZFRhYmxlKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRh
YmxlKFZNJikgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZv
aWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNDZiZjFjYmJlOTYyNDE0YmJhZjc4NGNkZWZi
MzM5YjNlNGEyOGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3ZTQ4ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEx
MSwxOCArMTExLDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0T3duUHJvcGVydHlTbG90KAogICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3OjpwdXQoCitib29sIEpTRGF0YVZp
ZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2Vs
bCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxl
bmd0aAotICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5
dGVPZmZzZXQpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJB
dHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMs
IHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0
eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTRGF0
YVZpZXc6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRlMTA1OWU5ZjcyNTVhMThjNTgwNmZkYTQ5
ZmMuLjc3NGI2ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRmN2QxZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xh
c3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAKIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDlhNWE1NDc2NzEwZjQ5
MjY3ZjYzNWQ2NWZiYWQ4NmMxOWVkODU5NjYuLjUyY2E0MGQwY2E2ZTY1MThmZTY5NTNjZDEzNGQw
MmUxMDlhM2FlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCkBAIC00MjQsMTMgKzQyNCwxMiBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAg
QmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlm
aWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9s
bG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KQEAgLTQ0MCwyMyAr
NDM5LDIxIEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVu
Y3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNl
IGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBkb250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgZG9udENhY2hlKTsKICAgICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpLT5pc1N0cmljdE1vZGUoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
YWxsZXIpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBi
ZSByZWlmaWVkLCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29s
IG9rYXkgPSB0aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKG9rYXksIG9rYXkpOwotICAgICAgICBCYXNlOjpwdXQodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbGVyKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQoZXhlYywgcHJvcGVydHlO
YW1lKTsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKQEAgLTUyNiw3ICs1MjMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIH0KICAg
ICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsK
KyAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNz
TWVjaGFuaXNtRXJyb3IpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYg
KGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggNmUzMzg1
NjQ3YmY0MGY2MWNiMzJmNzk4NjAxMGVjNTU0MWVlYTFiYy4uZWJlNDhjYTRiZDIxNDljYTQ3NzJk
ZjQzZDc3NDY1MmVkZTg4YjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaApAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMg
SlNDYWxsZWUgewogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
ID0gRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5k
ZXggODU4OTM5MmFmY2RhMWY1YjAxOTdkYzQ5NTlhMjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhk
MGFmODIzMjBiNTk4YTIyOTdmMWRjYjM4OTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIg
KzI3NCwxMiBAQCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5
QnVmZmVyVmlldyB7CiAgICAgZnJpZW5kIHN0cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4
IGI2YzZhZWQ4ODE0YTlhYjJkY2NkMjBlNjExZTY3YzRmOWQ5Y2JhOTEuLmE4MGFjNjAxOWNiOTBh
NmNiNmZhYWY4OGYzMTc4NDMzYjRkOGViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CkBAIC0zMDMsMTggKzMwMywxNiBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
dm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAg
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAg
IAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1
cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtMzY0LDE5ICszNjIsMTcgQEAK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpwdXRCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
CiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1l
ID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFs
dWUodGhpc09iamVjdCksIHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+cHV0KAotICAgICAgICAgICAgdGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90
KTsKICAgICB9CiAgICAgCi0gICAgdGhpc09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldEluZGV4KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCmluZGV4IDZkMTc2MDg2ZWFkMzkzM2RjMDFjYjc3MmY3ZDNhMTU5NDJm
YmQwZjYuLmVmZmViZmI0NTE1MTEzMWZhMDU4NTQ1NDU4NWIzNDgwZTY1Nzk3MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5jcHAKQEAgLTM4LDEzICszOCwxNSBAQCBib29sIEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKgogICAgIHJldHVybiBzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi12b2lkIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZh
bHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKICAg
ICBib29sIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSA9IHRydWU7CiAg
ICAgYm9vbCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciA9IHNsb3QuaXNJbml0aWFsaXphdGlv
bigpOwotICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQ
cm9wZXJ0eSwgaWdub3JlQ29uc3RBc3NpZ25tZW50RXJyb3IpOworICAgIGJvb2wgcHV0UmVzdWx0
ID0gZmFsc2U7CisgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9D
b25zdFByb3BlcnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciwgcHV0UmVzdWx0KTsKKyAg
ICByZXR1cm4gcHV0UmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5oCmluZGV4IDY0M2YwOTVkZDE5Nzk5ZTVhYTMyNjBiMzk4MmE5YTkzZTU2YmY1MzAuLjhk
NGZkMmUwNDYxNTAwZTgyZGNjZDY4MGIxYWMxNmNmMWQ2ZjA3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB9CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXN5
bWJvbFRhYmxlKCktPnNpemUoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDQzZGEyZWE1NmQ1N2JhOTljZWI2MWI2
MTc5MjMwMTI2NDI4YmZiNmMuLmZiNzcxODg5MzhhMDgyMjgwZGJmZDk2Y2Q3NmQ0ZGMxNzc5NWY2
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTYyMywxNiArNjIzLDE3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0xlZ2Fj
eVByb2ZpbGVyKCkgY29uc3QKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
c3VwcG9ydHNMZWdhY3lQcm9maWxpbmcodGhpcyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2Jh
bE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihj
ZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUp
ID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRP
bmx5RXJyb3IgPSBzbG90LmlzU3RyaWN0TW9kZSgpOwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlF
cnJvcnMgPSBmYWxzZTsKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNo
cG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KSkKKyAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDlkY2M0ZjAyZDMwMjc3NTkxNTFmYTkzNTg1NWE1YTQx
MjcxZjQ3MTMuLjA5MjVhYjA5MzlmYWQzMGVlM2I4NDYzOTI4NmM4NDQyZTZiOTA2YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDAz
LDcgKzQwMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBz
ZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCBjMGMwOWVh
MWEyY2I2MDM1YTY5NTliZDJiZWIwNTliM2FmYzgzNDM2Li5kYzkyM2FjNjgwMWQyNzljZWFjMzFj
OWMzMGZiZmQwMGRkNThhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC04MCwyMSArODAsMjIgQEAgYm9v
bCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNMZXhp
Y2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVj
dCkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBzbG90LmlzU3RyaWN0
TW9kZSgpIHx8IHRoaXNPYmplY3QtPmlzTGV4aWNhbFNjb3BlKCk7CiAgICAgYm9vbCBpZ25vcmVS
ZWFkT25seUVycm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVX
YXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMpKQotICAgICAgICByZXR1
cm47CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRJ
bnZhbGlkYXRlV2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRS
ZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogCiAgICAgLy8gV2UgZG9uJ3QgY2Fs
bCB0aHJvdWdoIHRvIEpTT2JqZWN0IGJlY2F1c2UgX19wcm90b19fIGFuZCBnZXR0ZXIvc2V0dGVy
IAogICAgIC8vIHByb3BlcnRpZXMgYXJlIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3Ro
ZXIgaW1wbGVtZW50YXRpb25zIGRvIG5vdAogICAgIC8vIGV4cG9zZSBpbiB0aGUgbGV4aWNhbEVu
dmlyb25tZW50IG9iamVjdC4KICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKSk7Ci0gICAgdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0
LT5wdXRPd25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmgKaW5kZXggYzQwYWU4NzM5NWNjMzEyMmQ2ODAzMWVjMmYzZmNkNTQ4N2UwZDhjNS4uNTE1ZTEx
NzljNjE0NDAyN2YzZDYxZjg2MjZiZjM0MGI4YjNiZGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC02Nyw3ICs2
Nyw3IEBAIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRS
ZWNvcmQgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmlu
ZGV4IGYwOGZlM2QwMmI5OWM4MzNiNTUxNzNlYjU0MDg0YzFlMjA0MzUwZmIuLjA0YjA4ZjRkMTg5
NTkyYjMyMThkNzJlNzM0YWM3MWU5ZWNkZjE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDgsMTQgKzEw
OCwxNCBAQCB2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKgogICAgIHJldHVybiBCYXNlOjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5
LCBtb2RlKTsKIH0KIAotdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNNb2R1bGVF
bnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2Vs
bCk7CiAgICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJl
Y29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJv
cGVydHlOYW1lLnVpZCgpKSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJl
Y29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaAppbmRleCBmN2VmYTYyNjNiMmIyNzQ5Zjc4OGMwYTdmMDczZjc2NzdhMDA5
YjAzLi40MzRiYjdjM2Y4YTIxYWViOGQ5ZWY1OWMyMmFmZTFiMDQ2NWYzMzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBA
IC03Nyw3ICs3Nyw3IEBAIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhp
Y2FsRW52aXJvbm1lbnQgewogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcAppbmRleCAwZmU5YzMyNjZmYWNhODc0ODJlMDJhMWZhYzZi
YWE5YzMzMDlkYjg3Li40MGRkYTczMzNmZjcyMGFkZjYwOThmZjQ3NzU3MmYxZWIxODZhZWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwCkBAIC0xNTEsMTcgKzE1MSwxOSBAQCBib29sIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNl
dC1wLXYtcmVjZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggMzdlNjQyZTg3NGE0NmQx
M2Y0NjVlMWE3ZDdjN2RlNDFjZjdiMjdkMS4uOGNmZWNmZDBhNDViNTA0ZTZlYWU3NDc5YjUzZDEx
OGY0NzI2Njc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC00Niw4ICs0Niw4IEBAIGNsYXNzIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCAxY2M0OTM3NWQ0ZjJjZjJlYzdl
MmUwMWJiYTdiYjhhOTE0N2Y4NGZmLi43YjdiMzIzZTk4YTkxYTE5ODJhYWMwNTYzNmMxYWE5ZDk3
ODFkMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCkBAIC03ODYsNyArNzg2LDggQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFu
dGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAg
ICAgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBv
cnRlZE1vZHVsZS0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOwogICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsK
KyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBzeW1ib2xU
YWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgaW1wb3J0
RW50cnkubG9jYWxOYW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9
IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5h
bWUpOwogICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKQEAgLTgxNiw4ICs4
MTcsMTAgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhl
Y1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICBmb3IgKGNvbnN0IGF1dG8mIHZh
cmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOwogICAgICAgICBW
YXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7Ci0gICAgICAgIGlmICghb2Zmc2V0
LmlzU3RhY2soKSkKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0
KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlh
YmxlLmtleS5nZXQoKSksIGpzVW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJv
ciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgIGlm
ICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5n
ZXQoKSksIGpzVW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxz
ZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KQEAgLTgzNyw3ICs4
NDAsOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVj
U3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgICAgICAgICB1bmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOwotICAgICAgICAg
ICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4
ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICov
IHRydWUpOworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgLyogc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0
cnVlLCBwdXRSZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMmU4ZjcxZWY5M2JmMDlkZGIzODVmMjZkYTM3
ZGRjZWYwOWE1YWUzYy4uYmYwZjc2NzdlZTVlMWNjZjQ4MmI2YzE2NjVlZTkyNTY2ZGY1MzM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNjUsNiAr
NjUsNyBAQAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTRmluYWxP
YmplY3QpOwogCiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iOworY29uc3Qg
Y2hhciogVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yID0g
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiI7CiAKIGNvbnN0IENsYXNzSW5mbyBKU09iamVjdDo6c19pbmZvID0geyAi
T2JqZWN0IiwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU09iamVjdCkgfTsKIApAQCAtNDE3
LDEyICs0MTgsMTIgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogfQogCiAvLyBFQ01BIDguNi4y
LjIKLXZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgIHJldHVybiBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTQzNSwyMyAr
NDM2LDIzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52
bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAg
IGlmIChncy5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbFNldHRlcihl
eGVjLCB0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDog
Tm90U3RyaWN0TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVy
KGV4ZWMsIHRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSgpLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIo
b2JqLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMs
IGdzLCBhdHRyaWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwg
dmFsdWUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihl
eGVjLCBncywgYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVl
KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vz
c29yKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwganND
YXN0PEN1c3RvbUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShv
YmosIGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBBY2Nlc3Nv
cikpOwogCkBAIC00NjEsMTAgKzQ2Miw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3co
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFvYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAg
ICAgICAgICAgaWYgKG9iai0+Y2xhc3NJbmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQ
cm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZp
bmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5
KHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVj
LCBlbnRyeSwgb2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RU
eXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8p
IHsKQEAgLTQ3Miw4ICs0NzEsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2
aW9yLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTAxMgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4ob2JqKTsKLSAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICBpZiAocHJvdG90
eXBlLmlzTnVsbCgpKQpAQCAtNDgyLDE4ICs0ODAsMjEgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFp
bk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0g
dGhpcyk7Ci0gICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOworICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJv
cGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlO
YW1lKSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAg
IHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTUwMywxNSArNTA0LDEz
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJ
TkdfVFlQRVM6IHsKICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydFVuZGVjaWRlZEZvclZhbHVl
KGV4ZWMtPnZtKCksIHZhbHVlKTsKICAgICAgICAgLy8gUmVsb29wLgotICAgICAgICBwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFM
TF9JTlQzMl9JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkg
ewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0o
KSwgdmFsdWUpOwotICAgICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgfQpAQCAtNTIz
LDIyICs1MjIsMjAgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXMoKVtwcm9wZXJ0eU5hbWVdLnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5n
dGgoKSkKICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFt
ZSArIDEpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlm
ICghdmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydERv
dWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8vIFJlbG9vcC4KLSAg
ICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5
SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAg
ICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsK
ICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkgewogICAgICAgICAg
ICAgdGhpc09iamVjdC0+Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAg
ICAgICAgICAgIC8vIFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKQEAgLTU0Niw3ICs1NDMsNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW3By
b3BlcnR5TmFtZV0gPSB2YWx1ZUFzRG91YmxlOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49
IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1
YmxpY0xlbmd0aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlOgpAQCAtNTY4LDcgKzU2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAg
ICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgCiAgICAgICAg
IHZhbHVlU2xvdC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBO
b25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgpAQCAtNTgzLDI2ICs1ODAsMjggQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICAKICAgICAgICAgLy8gVXBkYXRlIGxlbmd0aCAm
IG1fbnVtVmFsdWVzSW5WZWN0b3IgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAocHJvcGVydHlO
YW1lID49IGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAg
ICAgICAgbGVuZ3RoID0gcHJvcGVydHlOYW1lICsgMTsKICAgICAgICAgICAgIHN0b3JhZ2UtPnNl
dExlbmd0aChsZW5ndGgpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yOwogICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIGlmICh0
aGlzT2JqZWN0LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNP
YmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3Rv
cjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT52bSgp
LCB0aGlzT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIEFycmF5U3RvcmFn
ZSogSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VB
bHJlYWR5RXhpc3RzKFZNJiB2bSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMTI5Miw3ICsx
MjkxLDcgQEAgYm9vbCBKU09iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+YWxs
b3dzQWNjZXNzRnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXRHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIGdldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0
dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNj
cmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldHRlcik7CkBAIC0xMzAzLDEwICsx
MzAyLDEwIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAm
IERvbnRFbnVtKSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0g
ICAgZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
LCBmYWxzZSk7CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRTZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNl
dHRlciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0dGVyLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9y
OwogICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKHNldHRlcik7CkBAIC0xMzE3LDI3ICsxMzE2LDI1
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRF
bnVtKSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVm
aW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxz
ZSk7CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nl
c3NvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nl
c3NvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVy
U2V0dGVyKCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBw
dXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmlidXRlcywgUHV0
RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQor
ICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICBwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJp
YnV0ZXMpOworICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCFwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0g
ICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKIAogICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KTsKIApAQCAtMTM0NSwxOCArMTM0MiwyMCBAQCB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdQogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAg
ICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICBz
dHJ1Y3R1cmUtPnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVj
ayhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFj
Y2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNj
ZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwot
ICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAg
ICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogCiAgICAg
c3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogLy8gSGFzUHJvcGVydHkoTywgUCkgZnJvbSBTZWN0aW9uIDcuMy4x
MCBvZiB0aGUgc3BlYy4KQEAgLTE4ODgsNyArMTg4Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpT
T2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBnCiAgICAgc2xvdC5zZXRDYWNoZWFibGVHZXR0ZXJTbG90KHRoaXMsIGF0dHJpYnV0ZXMsIGpz
Q2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQpOwogfQogCi12b2lkIEpT
T2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5
RW50cnkqIGVudHJ5SW5NYXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
UHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6cHV0SW5k
ZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUlu
TWFwLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3Jp
cHRvciYgb2xkRGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gbWFwID0gbV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VN
YXAuZ2V0KCk7CkBAIC0xODk5LDcgKzE4OTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVk
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQog
ICAgICAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAg
ICAgICAgICAgICBlbnRyeUluTWFwLT5zZXQodm0sIG1hcCwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlk
aW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5BY2Nlc3NvcjsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpKSB7CkBAIC0xOTIyLDExICsxOTIxLDEyIEBAIHZvaWQgSlNPYmplY3Q6
OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlFbnRyeSog
ZW50cnlJbk1hCiAKICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGFjY2Vzc29yKTsK
ICAgICAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092
ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpICYgflJlYWRPbmx5OwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEFTU0VSVChkZXNjcmlwdG9y
LmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSk7CiAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAvLyBEZWZpbmVkIGluIEVTNS4xIDguMTIuOQpAQCAtMjAxMSw3
ICsyMDExLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFAKICAgICAgICAgaWYgKGN1cnJlbnQu
aXNEYXRhRGVzY3JpcHRvcigpICE9IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAg
ICAgICAgICAgICAvLyA5LmEuIFJlamVjdCwgaWYgdGhlIFtbQ29uZmlndXJhYmxlXV0gZmllbGQg
b2YgY3VycmVudCBpcyBmYWxzZS4KICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFi
bGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9u
LCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0
aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlz
bUVycm9yKTsKICAgICAgICAgICAgIC8vIDkuYi4gSWYgSXNEYXRhRGVzY3JpcHRvcihjdXJyZW50
KSBpcyB0cnVlLCB0aGVuIGNvbnZlcnQgdGhlIHByb3BlcnR5IG5hbWVkIFAgb2Ygb2JqZWN0IE8g
ZnJvbSBhCiAgICAgICAgICAgICAvLyBkYXRhIHByb3BlcnR5IHRvIGFuIGFjY2Vzc29yIHByb3Bl
cnR5LiBQcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgdmFsdWVzIG9mIHRoZSBjb252ZXJ0ZWQgcHJvcGVy
dHkncwogICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXSBhbmQgW1tFbnVtZXJhYmxlXV0g
YXR0cmlidXRlcyBhbmQgc2V0IHRoZSByZXN0IG9mIHRoZSBwcm9wZXJ0eSdzIGF0dHJpYnV0ZXMg
dG8KQEAgLTIwNjUsNyArMjA2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJ
bmRleE1hcCgpCiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKIH0K
IAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRv
SW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRo
aXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNw
ZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBAIC0yMDc3LDE0
ICsyMDc3LDE0IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhP
bkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlmIChzdG9yYWdl
ICYmIHN0b3JhZ2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQoaSk7CiAgICAg
ICAgICAgICBpZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91bmQoKSAmJiAo
aXRlci0+dmFsdWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkpIHsKLSAgICAg
ICAgICAgICAgICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3Nw
YXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgICAgICBwdXRS
ZXN1bHQgPSBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJz
ZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50LT50
eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9iamVjdCogcHJv
eHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHByb3h5LT5w
dXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRo
aXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjA5NiwxNyArMjA5NiwxNyBAQCBib29sIEpTT2Jq
ZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG90eXBl
VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4g
YXNPYmplY3QocHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlRm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAg
cmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cs
IHB1dFJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgot
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChp
bmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAg
ICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMTIwLDE2ICsyMTIwLDE1
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+
PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZv
clZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAg
ICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9y
VmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAg
ICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZ
X0lOREVYKTsKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNw
YXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAg
ICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2Up
OwogICAgICAgICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAg
ICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEp
OwpAQCAtMjE0MCwzMSArMjEzOSwzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNh
c2UgSW50MzJTaGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAg
ICAgY2FzZSBEb3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7
CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAg
ICAgQVNTRVJUKHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRl
cmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250
aWd1b3VzU2hhcGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwg
dGhpcywgdmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0Fy
cmF5LmNwcC4KLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1
bnNpZ25lZCwgSlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogCkBAIC0yMTkxLDEyICsyMTkxLDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5z
CiAgICAgICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9y
YWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8s
IG9yIGNhbid0IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBh
IHNwYXJzZSBtYXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJz
ZUluZGV4TWFwKGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9
CiAKICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjIwNiw3ICsyMjA1
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJh
eVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNS
ZWFkT25seSgpIHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYg
KHNob3VsZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSAr
IDE7CiAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjIxNSwxMCArMjIx
NCw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1
c2luZyBhIG1hcCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4K
ICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1v
ZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9u
IGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8
ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWlu
Y3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5w
dXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZv
clZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0
aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVj
LCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFn
ZSBhZnRlciBpbmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3Iu
CiAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjIzNiw5ICsyMjMzLDEwIEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjI0OCwy
NSArMjI0NiwyMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAg
ICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAg
ICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJl
QXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2ll
bnRseUJleW9uZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpIHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBz
aG91bGRUaHJvdywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0
SW5kZXhpbmcoKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0
byB0aGUgU2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVB
cnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsK
LSAgICAgICAgICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhp
cywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
QUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjI3NCwzOCArMjI2OSwzMyBAQCB2
b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2
YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAg
IGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzoKKyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAg
ICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4
ZWMsIGksIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJ
R1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1
ZSk7CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToK
ICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8g
b3duIHByb3BlcnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGlu
IHRoZSBzcGFyc2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJh
eVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAt
PmNvbnRhaW5zKGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMs
IGksIHZhbHVlLCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJv
b2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5z
KGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJy
YXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZl
Y3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9k
ZSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQ3OSwxNSArMjQ2OSwxNSBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0
aXZlSW50cmluc2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVy
KiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIG5hbWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAg
ICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0
dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiti
b29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCog
bmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQ5
NSw3ICsyNDg1LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7
CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNp
Yyk7Ci0gICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKIH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTI4MDYsMTIgKzI3OTYsMTEgQEAgc3RhdGljIGJv
b2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3Bl
cnR5TmFtZSBwcm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQotICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7Ci0gICAgZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlKTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CkBAIC0yODky
LDcgKzI4ODEsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgIGlmIChkZXNjcmlwdG9y
LmlzRGF0YURlc2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAg
ICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJv
d0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7
CisgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VB
Y2Nlc3NNZWNoYW5pc21FcnJvcikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCkBAIC0yOTQ0LDcgKzI5MzMsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAg
ICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29y
KSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0M2I5OTA2MmU4NWQ3NTk3MTA0NDZlN2I4ODliMmVi
NTdmZjczNjU5Li4yNDhhNDg3MmU4Y2RlZDU4NTBmOWRkZDc3ZTFmOWIzNDc0ZGNiN2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTcxLDYgKzcxLDcgQEAg
aW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogCiBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
Jik7CiBleHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3I7CitleHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3I7CiAKIENPTVBJTEVf
QVNTRVJUKE5vbmUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlLCBOb25lX2lzX2JlbG93X0ZpcnN0
SW50ZXJuYWxBdHRyaWJ1dGUpOwogQ09NUElMRV9BU1NFUlQoUmVhZE9ubHkgPCBGaXJzdEludGVy
bmFsQXR0cmlidXRlLCBSZWFkT25seV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlKTsK
QEAgLTE3MSwxOCArMTcyLDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIHJldHVybiBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAg
IH0KICAgICAKLSAgICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHko
cHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OworICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
cywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAg
ICAgCiAgICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBA
IC0yMDQsNyArMjA1LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9
CiAKICAgICAvLyBBIG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGly
ZWN0SW5kZXguCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSk7CiAgICAgICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAg
IHsKQEAgLTQ5NywxNSArNDk4LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAgICAgLy8gIC0gYWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0
ZXMgd2lsbCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4
aXN0IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5h
bWUgaXMgYXNzdW1lZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0m
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2
b2lkIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDApOwotICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RB
Y2Nlc3NvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRH
ZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKLSAgICB2b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBw
dXRTZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhh
c1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02
MzEsOCArNjMyLDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lk
IHB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkg
eyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAg
IHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9i
amVjdCosIElkZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVk
IGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJp
bnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9u
LCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25M
ZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpA
QCAtNzAzLDcgKzcwNCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ly8gaXMgZXF1aXZhbGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0
QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBi
b29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0
dXJucyAwIGlmIGludDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVz
ZQogICAgIC8vIGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0
aW1lLCBvciBiZWNhdXNlCkBAIC04NDksOCArODUwLDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhj
ZXB0aW9uKTsKIAogICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAg
IHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSop
OworICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3Rv
cmFnZSopOwogCiAgICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5l
d0xlbmd0aCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg1OSw3
ICs4NjAsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAg
ICB2b2lkIG5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAot
ICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1
bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAK
ICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQg
YW5kIHlvdSdyZSBzdXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAg
LTkwNCw3ICs5MDUsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgcHV0RGlyZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxp
bmUoRXhlY1N0YXRlKiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBORVZFUl9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtOTEzLDkgKzkxNCw5IEBAIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAg
ICAgIAotICAgIHZvaWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJy
YXlFbnRyeSosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYg
b2xkKTsKKyAgICBib29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFy
cmF5RW50cnkqLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IG9sZCk7CiAgICAgICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOworICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJv
b2wgcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHV0RGlyZWN0SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGly
ZWN0SW5kZXhNb2RlKTsKICAgICAgICAgCkBAIC0xNDY4LDE5ICsxNDY5LDE5IEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3Vz
dG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAg
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NF
UlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVy
dHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZjNk
MmI4MjhjM2YwOTM4NTIzMjRkNWY2OTFlMGM4NThhMjQ2M2UxMy4uMjEwNDQxNzE0ZWE2Nzk5MWYz
Nzc2NzczMDIyNWIxNWFmOWU2NDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgUHIKIH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmly
c3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9w
ZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5l
dmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBw
dXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1
cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQ
dXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8o
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpCi0gICAgICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVT
bG93KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNP
YmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCAwLCBzbG90KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhp
c09iamVjdC0+cHV0SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJveHkuY3BwCmluZGV4IDQwZDMxZmQ2ZTJlYzFkZWRkZmExODI0MDY3NWFhZThmM2U4M2RlMzcu
LjE5M2RmZTU3ZGNmZDVmMDNjMWQ3MDA1YTUwYjIwOWZjN2ZjYjY3YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBK
U1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0
LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJn
ZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBK
U1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpT
UHJveHk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBK
U1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2Jq
ZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09i
amVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXRCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhy
b3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcy
YWJjZWJhODdmZmIwNmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2
NmFmYjgwYjliYmFlZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aApAQCAtNzYsOCArNzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShj
b25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVh
YzIzNmY3NmFiYWI4MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRm
NTdjOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJs
ZVB1dE1vZGUgewogdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9k
ZSwgdHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVQdXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcywKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVS
ZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldCom
IHNldCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVu
dHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAg
IGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAg
ICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIApAQCAtMTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQo
CiAgICAgLy8gdGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0Mu
IEFuZCBJIGRvbid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4K
ICAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmpl
Y3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAg
ICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93
UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3Vs
ZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0
UmVzdWx0KQogewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1i
b2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxT
eW1ib2xUYWJsZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdu
b3JlUmVhZE9ubHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAg
ICBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29s
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3lt
Ym9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRl
V2F0Y2hwb2ludFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAg
IGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3Jz
KQorICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5
RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVs
bHB0cjsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5
bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9
IHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAg
IGlmIChzZXQpCiAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFp
bChvYmplY3QsIHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhh
ZCBmb3VuZCB0aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1i
b2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1
dGVzVG91Y2hXYXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0
ID0gbnVsbHB0cjsKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwog
ICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0g
c3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRP
bmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0g
c3ltYm9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRP
bmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYg
KHNldCkKICAgICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCmluZGV4IDBiZjlkMmU5YjUwZmYyMjM0NjQ2NjQ2MWQ4NTliZTgzODI1
OThhYWYuLjY3MzIzOTQ1YzU5MDE2YjczMTc2ODU2ZjAzY2M1NzQwMmNhYTBhYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjcgKzI4NCw0MCBAQCBpbmxp
bmUgYm9vbCBnZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFi
bGUmIHRhYmxlLCBUaGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0
aGUgcHJvcGVydHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVj
dCBwdXQgd2FzIGNhbGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQg
cHV0IGlzIGJlaW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94
eSB0YXJnZXQpLgogLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3
YXMgb3JpZ2luYWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBw
cm94eSBpdHNlbGYpLgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1
bmN0aW9uKSB7CiAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkp
IHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3Zl
cnJpZGUgcHJvcGVydHkuCiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKLSAgICB9IGVsc2UgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3Nvcikg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBBY2Nlc3NvcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7Ci0gICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFk
T25seSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0g
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yOwogICAgICAgICBKU1ZhbHVlIHVw
ZGF0ZVRoaXNWYWx1ZSA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvciA/IHNs
b3QudGhpc1ZhbHVlKCkgOiBKU1ZhbHVlKGJhc2UpOwotICAgICAgICBlbnRyeS0+cHJvcGVydHlQ
dXR0ZXIoKShleGVjLCBKU1ZhbHVlOjplbmNvZGUodXBkYXRlVGhpc1ZhbHVlKSwgSlNWYWx1ZTo6
ZW5jb2RlKHZhbHVlKSk7Ci0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9t
QWNjZXNzb3IpCisgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBl
bnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3NvciwgdXBkYXRlVGhpc1ZhbHVlLCB2YWx1
ZSk7CisgICAgICAgIGlmIChpc0FjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21B
Y2Nlc3NvcihiYXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVy
KCkpOwotICAgIH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMzEyLDE0ICszMjUsMTQgQEAgaW5s
aW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVWYWx1ZSog
ZW50cnksIEpTT2JqZWN0KiBiYXMKICAqIEl0IGxvb2tzIHVwIGEgaGFzaCBlbnRyeSBmb3IgdGhl
IHByb3BlcnR5IHRvIGJlIHNldC4gIElmIGFuIGVudHJ5CiAgKiBpcyBmb3VuZCBpdCBzZXRzIHRo
ZSB2YWx1ZSBhbmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgKi8KLWlu
bGluZSBib29sIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTT2JqZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRh
YmxlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNW
YWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0g
dGFibGUuZW50cnkocHJvcGVydHlOYW1lKTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNlLCBiYXNlLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBwdXRFbnRyeShleGVjLCBl
bnRyeSwgYmFzZSwgYmFzZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcAppbmRleCA3MzU1ZmIyN2FhYzg4MjYxODZmN2UzNGIyNGE4YjZjMmQ0NWFiYTFiLi40YjZm
ZTYwNDI1NjRlNzk1OWMyOTY1YjkxMjE1ZWJjMDYzZDE3Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0zNDcsMTIgKzM0NywxMiBAQCBi
b29sIFByb3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGVyZm9ybURl
ZmF1bHRQdXRGdW5jdGlvbj4KLXZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1
dCkKK2Jvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIEpTVmFsdWUg
aGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0
PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM2OSwxMiArMzY5LDEwIEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBzZXRN
ZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94
eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpT
T2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0TWV0aG9kLmlzVW5k
ZWZpbmVkKCkpIHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biBwZXJmb3JtRGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM4Myw2MiArMzgxLDYxIEBA
IHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1
dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgc2V0TWV0aG9kLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29s
IHRyYXBSZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAg
ICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9y
KCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUo
KSkgewogICAgICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgp
LCBwdXRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBh
bmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJu
IGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnLiIpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRl
c2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNl
dHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9uLWNv
bmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCByZXR1
cm4gZmFsc2UuIikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb3h5
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgQmFzZTo6cHV0KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvKQorICAgICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJv
eHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsK
ICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3Qt
PnRhcmdldCgpKTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0
LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwg
c2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAg
cmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVl
KCksIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCi12b2lkIFByb3h5T2Jq
ZWN0OjpwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVl
LCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKTsgCiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAg
ICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IHNob3VsZFRocm93OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsdWUsIGlzU3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJn
ZXQgb2YgdGhlIHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5w
dXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKKyAgICAgICAg
cmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5p
bXBsKCksIHB1dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHBlcmZvcm1QdXQoZXhlYywgcHV0
VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAg
cmV0dXJuIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgp
LCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBQcm94eU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnB1
dEJ5SW5kZXhDb21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApp
bmRleCBhMTRkZmNjZWJiMjhkYjU2Y2Y0YTI3ZDg1YTBhN2IyZWM5YzgyOGM2Li5iMWYxNTYyNTJl
Mzc5NGQ1MTdkZGQyNTI5YTA2MjUwNzdiNjhiOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAgLTYyLDkgKzYyLDkgQEAgY2xhc3MgUHJveHlPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNPYmplY3QqIHRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1ZSBoYW5kbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBw
dXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSopOwog
ICAgIHZvaWQgcmV2b2tlKFZNJik7CiAgICAgYm9vbCBpc1Jldm9rZWQoKSBjb25zdDsKQEAgLTk2
LDcgKzk2LDcgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbj4KICAgICBib29s
IHBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVu
Y3Rpb24pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9u
PgotICAgIHZvaWQgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsK
KyAgICBib29sIHBlcmZvcm1QdXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbik7CiAg
ICAgYm9vbCBwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBw
ZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgcGVyZm9ybURlZmluZU93
blByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IDkwYzU3YmU5MGY4YTFhNGRiZDZlNDMzNTBiNWJj
NjdmZTM2NDFhY2MuLjEzYWQyZDM3YWU4YTEwZGVhOWZjNzlhZjRmOTMxYzRkMmVkMjU3YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCkBA
IC00MCw3ICs0MCw3IEBAIGNsYXNzIFB1dFByb3BlcnR5U2xvdCB7CiBwdWJsaWM6CiAgICAgZW51
bSBUeXBlIHsgVW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHksIFNldHRl
clByb3BlcnR5LCBDdXN0b21WYWx1ZSwgQ3VzdG9tQWNjZXNzb3IgfTsKICAgICBlbnVtIENvbnRl
eHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsKLSAgICB0eXBlZGVm
IHZvaWQgKCpQdXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQdXRWYWx1ZUZ1
bmMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHZhbHVlKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdChKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBp
c1N0cmljdE1vZGUgPSBmYWxzZSwgQ29udGV4dCBjb250ZXh0ID0gVW5rbm93bkNvbnRleHQsIGJv
b2wgaXNJbml0aWFsaXphdGlvbiA9IGZhbHNlKQogICAgICAgICA6IG1fdHlwZShVbmNhY2hhYmxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApp
bmRleCA4OTRhYWZhNDY5NjhlNjAzMmFmZDlkZDhiYmQ3NWIyOTgxNzkwNzlkLi5jNmQ1N2IzMTcw
OTQ5ZWRhNGIzOTRjOTZlZjc1ZThiZTk3ODQ3ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RPd25LZXlzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIAogfQpAQCAtNjksNiArNzAsNyBAQAogICAgIGlzRXh0
ZW5zaWJsZSAgICAgICAgICAgICByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBvd25LZXlzICAgICAgICAgICAgICAgICAgcmVmbGVj
dE9iamVjdE93bktleXMgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAg
cHJldmVudEV4dGVuc2lvbnMgICAgICAgIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHNldCAgICAgICAgICAgICAgICAgICAgICBy
ZWZsZWN0T2JqZWN0U2V0ICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMK
ICAgICBzZXRQcm90b3R5cGVPZiAgICAgICAgICAgcmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9m
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiBAZW5kCiAqLwpAQCAtMjM0LDYgKzIzNiwy
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQcmV2ZW50RXh0
ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocmVzdWx0KSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLXJlZmxlY3Quc2V0CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Qu
c2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgIEpT
T2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIEpTVmFsdWUgcmVjZWl2ZXIgPSB0YXJnZXQ7CisgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA0KQorICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFy
Z3VtZW50KDMpOworCisgICAgLy8gRG8gbm90IHJhaXNlIGFueSByZWFkb25seSBlcnJvcnMgdGhh
dCBoYXBwZW4gaW4gc3RyaWN0IG1vZGUuCisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgaXNTdHJpY3RNb2RlKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBzbG90KSkpOworfQorCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYjBhYTVmNjRhMTA1ZTllY2I5MTYyNTUzOTIwNTQ1OWYwZjRhMWE0OC4uZWViZmQ1
MDJjMTE5ODA2OTYyNjc0MTk5YTk5ZDg5OTVmMzNjMzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtNDcsOCArNDcs
OCBAQAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7CiAKLXN0YXRpYyB2b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKLXN0YXRpYyB2b2lk
IHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSk7CitzdGF0aWMgYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CitzdGF0aWMgYm9v
bCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtMjM0LDE2ICsy
MzQsMjIgQEAgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGFzUmVnRXhwQ29uc3RydWN0b3IoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nZXRS
aWdodENvbnRleHQoZXhlYykpOwogfQogCi12b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IHZhbHVlKQorYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCisgICAgaWYgKGF1dG8gY29uc3RydWN0b3IgPSBq
c0R5bmFtaWNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpKSB7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5zZXRJbnB1dChleGVjLCBKU1ZhbHVlOjpkZWNv
ZGUodmFsdWUpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpCitib29sIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0
b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCisgICAgaWYgKGF1dG8gY29uc3RydWN0
b3IgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpKSB7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5zZXRNdWx0aWxpbmUoSlNWYWx1ZTo6
ZGVjb2RlKHZhbHVlKS50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBnZXRSZWdFeHBT
dHJ1Y3R1cmUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG5ld1RhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCmluZGV4IDU0Y2FhNmNjMzYzNWVkZDQ3NWJlNWU3OGNhY2FjMDY0NmQxYmYy
ZDIuLmQzOWYxZmZmODE2ZTMxY2UxOGIxZjA2ZjQ3MjA2ZWNjM2EwMGU1ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVu
dW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ug
ZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIik7CiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNj
ZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIik7CisgICAgICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCBVbmNvbmZpZ3VyYWJsZVByb3Bl
cnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpOwogICAgICAgICBpZiAoIXJlZ0V4cC0+bV9s
YXN0SW5kZXhJc1dyaXRhYmxlKSB7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJs
ZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKQEAgLTEzOCwyNiAr
MTM4LDI2IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91
bGRUaHJvdyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmlj
dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpCitzdGF0aWMgYm9vbCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZh
bHVlKQogewotICAgIGFzUmVnRXhwT2JqZWN0KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+
c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIHRydWUpOworICAgIHJl
dHVybiBhc1JlZ0V4cE9iamVjdChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNldExhc3RJ
bmRleChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCB0cnVlKTsKIH0KIAotc3RhdGljIHZv
aWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBib29s
IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgYXNSZWdF
eHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFsc2UpOworICAgIHJldHVybiBhc1JlZ0V4cE9iamVj
dChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLCBmYWxzZSk7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUmVnRXhwT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKLSAgICAgICAg
YXNSZWdFeHBPYmplY3QoY2VsbCktPnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gYXNSZWdFeHBPYmplY3QoY2VsbCkt
PnNldExhc3RJbmRleChleGVjLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tVmFsdWUoYXNSZWdFeHBPYmplY3QoY2VsbCksIHNsb3QuaXNTdHJpY3RN
b2RlKCkKICAgICAgICAgICAgID8gcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0CiAgICAg
ICAgICAgICA6IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdCk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgQmFzZTo6cHV0KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQo
Y2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUgUmVn
RXhwT2JqZWN0OjpleGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTdHJpbmcqIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmgKaW5kZXggNmU3MTVkNWU3Zjk3ZTBhODAwYTU2MDZkZTYxMzcyMDBhNzk2
ZWNkZi4uYTgwNGZkMzg0ZWFjOTMxNjFmMjQyYTYzMjJjNGVmZWFiMmNmNjU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTcyLDcgKzcyLDcg
QEAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpT
VmFsdWUgZXhlY0lubGluZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7
CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmNwcAppbmRleCA5YTVkYTgzOTU3YzMyNGU4ZGFmNDAyNWRmNDE0OTUyZDg0YzA1
NzM5Li5jOGUwMDNiZjg1OTgyNjFiOTM2MGQ3Y2I2YjYxYjhiN2I3MmVhNjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cApAQCAtODgsNyArODgsNyBAQCBTdHJ1Y3R1cmUqIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpCitib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCkBAIC0xMDIsMTAgKzEw
MiwxMCBAQCB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLAogICAgICAgICByZW1vdmUocmVzdWx0Lml0
ZXJhdG9yKTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGVudHJ5
LnB1dChleGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4g
ZW50cnkucHV0KGV4ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBi
b29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHV0RGlyZWN0SW5kZXhNb2RlIG1vZGUpCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCB2b2lkIFNw
YXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0
CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKEJhc2U6OmdldCgpLCBhdHRyaWJ1dGVzKTsK
IH0KIAotdm9pZCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQorYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3Nv
cikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAg
aWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBzZXQoZXhl
Yy0+dm0oKSwgbWFwLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgY2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAg
cmV0dXJuIGNhbGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNo
b3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwogfQogCiBKU1ZhbHVlIFNw
YXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA3NTRi
NTNkOWQ2MDFkZjJhY2Q3YmNhZjJlOTRhZWY2ZDMzN2RmYTIuLmY3MWRjOTk0ZTg5NGE3MjgzYTU3
MmIzMzI2YzllODc2MWI5MjJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNw
YXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKIAogICAgIHZv
aWQgZ2V0KEpTT2JqZWN0KiwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICAgdm9pZCBnZXQoUHJv
cGVydHlEZXNjcmlwdG9yJikgY29uc3Q7Ci0gICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICBib29sIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNl
QXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIEpTVmFsdWUg
Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKQEAg
LTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBj
b250ZW50cyBvZiB0aGUgbWFwCi0gICAgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqLCBKU09iamVj
dCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dEVu
dHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSk7CiAg
ICAgQWRkUmVzdWx0IGFkZChKU09iamVjdCosIHVuc2lnbmVkKTsKICAgICBpdGVyYXRvciBmaW5k
KHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDJhYjQ4Njc3MjIyNjYyYjVj
OTlhNmQ2YmZhM2Q4MmU1NjJhNWZlZGUuLjY2ZmI2ZmYzOGUzNmY0MTE4ZGJiODAyOTQzYjJhMGU2
M2ZmMmFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisj
aW5jbHVkZSAiUmVqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC02MCwyNSArNjEsMjUg
QEAgYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVy
dHlOYW1lKSwgc2xvdCk7CiB9CiAKLXZvaWQgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi12b2lkIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUo
KS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cp
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggOTBlNmU1Y2NhNDRhYTA2NDc0MzVhMGFhZjdi
ZDBiM2NmZGYxZGEwOS4uNGY4OTY5NzQzOWM1NjVmZjUwNmMzOWNmOWYwZjdiNWZmMTcwZTkwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTQ5
LDggKzQ5LDggQEAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGQyZGQ0ZWZlNWU3
MDNlNjIxNTE1YzEwYmJhY2Q0OThmMmE0M2Y2ODQuLmNiNjlhMjk5NDk0N2RlYzhiZjQ3OWI3MzY3
ODZhM2Y3YmJlYmQ5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTEw
NzcsNyArMTA3Nyw3IEBACiAtIHBhdGg6IGVzNi9SZWZsZWN0X1JlZmxlY3QuY29uc3RydWN0X3Nl
dHNfbmV3LnRhcmdldF9tZXRhX3Byb3BlcnR5LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5zZXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0
aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLm1hdGNoXS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5
cGVbU3ltYm9sLnJlcGxhY2VdLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9uYW1lc3BhY2UuanMKaW5kZXggNjc4OTI4MjY5YmNiMzVmNzYyZmNjMWQyZDE0ZDYz
ZjA0MTg1ZGNlZC4uOTVjMjI4MzJjOGJlYTg0NDI5Yjc4MmNjOGFjYWNhMmJlZGU0ZGIwMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS5qcwpA
QCAtMjcsNiArMjcsMTIgQEAKIHNob3VsZEJlKG5hbWVzcGFjZS5fX3Byb3RvX18sIHVuZGVmaW5l
ZCk7CiBzaG91bGRCZShSZWZsZWN0LmlzRXh0ZW5zaWJsZShuYW1lc3BhY2UpLCBmYWxzZSk7CiAK
K3Nob3VsZEJlKFJlZmxlY3Quc2V0KG5hbWVzcGFjZSwgJ0V4dGVuZGVkJywgNDIpLCBmYWxzZSk7
CitzaG91bGRCZSgnRXh0ZW5kZWQnIGluIG5hbWVzcGFjZSwgZmFsc2UpOworCitzaG91bGRCZShS
ZWZsZWN0LnNldChuYW1lc3BhY2UsIDQyLCA0MiksIGZhbHNlKTsKK3Nob3VsZEJlKDQyIGluIG5h
bWVzcGFjZSwgZmFsc2UpOworCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgbmFtZXNwYWNlLnZh
bHVlID0gMjA7CiB9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5LmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9yZWZsZWN0LXNldC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cmVmbGVjdC1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5ZjdjZjc3NDA4Y2VkYjEwYTUzOWRjNzlmZGQ3
NTU0ZjY4NDQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMKQEAgLTAsMCArMSw5MzAgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigibm90IHRocm93bi4iKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30K
Kworc2hvdWxkQmUoUmVmbGVjdC5zZXQubGVuZ3RoLCAzKTsKKworc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIFJlZmxlY3Quc2V0KCJoZWxsbyIsICJoZWxsbyIsIDQyKTsKK30sIGBUeXBlRXJyb3I6
IFJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3RgKTsK
KwordmFyIHN5bWJvbCA9IFN5bWJvbCgpOworCisoZnVuY3Rpb24gcmVjZWl2ZXJDYXNlKCkgewor
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHJlY2VpdmVyIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAg
dmFyIHJlY2VpdmVyID0ge307CisgICAgdmFyIG9iamVjdCA9IHsKKyAgICB9OworCisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnQ29jb2EnLCA0MiwgcmVjZWl2ZXIpLCB0cnVlKTsK
KyAgICAvLyBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdDb2NvYScpLCB1bmRlZmluZWQp
OworICAgIC8vIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAnQ29jb2EnKSwgNDIpOwor
CisgICAgdmFyIG9iamVjdDIgPSB7CisgICAgICAgIHNldCBDb2NvYSh2YWx1ZSkgeworICAgICAg
ICAgICAgcHJpbnQodmFsdWUpOworICAgICAgICAgICAgc2hvdWxkQmUodGhpcywgcmVjZWl2ZXIp
OworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICB9CisgICAgfTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdDb2NvYScsIDQyLCByZWNlaXZlciksIHRy
dWUpOworICAgIC8vIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ0NvY29hJyksIHVuZGVm
aW5lZCk7CisgICAgLy8gc2hvdWxkQmUoUmVmbGVjdC5nZXQocmVjZWl2ZXIsICdDb2NvYScpLCA0
Mik7Cit9KCkpOworCisoZnVuY3Rpb24gcHJveHlDYXNlKCkgeworfSgpKTsKKworKGZ1bmN0aW9u
IG9iamVjdENhc2UoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIHZhciBvYmplY3QgPSB7fTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCB1bmRlZmluZWQpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCA0Mik7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAwKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9s
KSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwg
NDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQy
KTsKKworICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVBy
b3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAg
ICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdy
aXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAs
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2Nv
YScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2ws
IHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAg
IH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdD
b2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScp
OworCisgICAgdmFyIG9iamVjdCA9IHt9OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJl
dHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAg
ICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwg
J0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0Miks
IHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgewor
ICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsK
KyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQy
KSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsK
KyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7
CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
IHN5bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhp
c3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7
CisKKyAgICB2YXIgb2JqZWN0ID0ge307CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0
dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVj
dCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2Nv
YSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmpl
Y3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCBzeW1ib2wpLCAnQ29jb2EnKTsKK30oKSk7CisKKyhmdW5jdGlvbiBhcnJheUNhc2UoKSB7Cisg
ICAgJ3VzZSBzdHJpY3QnOworICAgIHZhciBvYmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsICdoZWxsbycpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAwKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAs
IDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICBvYmplY3RbMTAw
MDAwMF0gPSAiSGVsbG8iOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNTAp
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA1MCk7CisKKyAg
ICB2YXIgb2JqZWN0ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRh
YmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
ICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAwLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTog
ZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAw
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAg
ICBzaG91bGRCZShvYmplY3QubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmlu
ZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAg
ICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIC8vIExlbmd0aC4KKyAgICB2YXIgb2Jq
ZWN0ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDAp
OworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgUmVmbGVjdC5zZXQob2JqZWN0LCAn
bGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKTsKKyAgICB9LCBgUmFuZ2VFcnJvcjogSW52YWxpZCBhcnJh
eSBsZW5ndGhgKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwg
MCk7CisKKyAgICB2YXIgb2JqZWN0ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnbGVuZ3RoJyksIDApOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xl
bmd0aCcsIDIwKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVu
Z3RoJyksIDIwKTsKKworICAgIHZhciBvYmplY3QgPSBbXTsKKyAgICBPYmplY3QuZnJlZXplKG9i
amVjdCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsIDIwKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKworICAgIHZh
ciBvYmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29h
JzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8v
IFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0K
KyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0Nv
Y29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOyAg
Ly8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZp
bmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAg
ICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9
CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9s
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQy
KSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworCisgICAgdmFy
IG9iamVjdCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0
LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2En
OworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2Nv
YSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAw
LCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9s
LCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAg
ICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3lt
Ym9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2ws
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7Cit9KCkpOworCisoZnVuY3Rpb24gYXJyYXlCdWZmZXJDYXNlKCkgeworICAgICd1
c2Ugc3RyaWN0JzsKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCB1bmRlZmluZWQpOworICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAwKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAwKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5k
ZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAg
ICBvYmplY3RbMTAwMDAwMF0gPSAiSGVsbG8iOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgMCwgNTApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCA1MCk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICB2
YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgdmFsdWU6
ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKG9iamVjdC5sZW5ndGgsIHVu
ZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5
bWJvbCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNl
CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9s
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQy
KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0Nv
Y29hJyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChvYmplY3QsICdieXRlTGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKSwgZmFsc2Up
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgNjQpOwor
CisgICAgdmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcsIDIwMDApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2NCk7CisKKyAgICB2YXIgb2JqZWN0
ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCB7CisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAg
IH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0
aCcpLCA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcs
IDIwKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5n
dGgnKSwgNjQpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAg
ICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAg
ICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0
aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJl
KFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNl
IHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCks
ICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBz
eW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7Cisg
ICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNo
b3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOyAgLy8gUmV0dXJu
IHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlC
dWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAn
aGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOwor
ICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVj
dCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7
CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0
MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7
CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9
CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9s
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQy
KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0Nv
Y29hJyk7Cit9KCkpOworCitbCisgICAgWyBVaW50OEFycmF5LCAxIF0sCisgICAgWyBVaW50OENs
YW1wZWRBcnJheSwgMV0sCisgICAgWyBVaW50MTZBcnJheSwgMiBdLAorICAgIFsgVWludDMyQXJy
YXksIDQgXSwKKyAgICBbIEludDhBcnJheSwgMSBdLAorICAgIFsgSW50MTZBcnJheSwgMiBdLAor
ICAgIFsgSW50MzJBcnJheSwgNCBdLAorICAgIFsgRmxvYXQzMkFycmF5LCA0IF0sCisgICAgWyBG
bG9hdDY0QXJyYXksIDggXSwKK10uZm9yRWFjaChmdW5jdGlvbiB0eXBlZEFycmF5Q2FzZShbIFR5
cGVkQXJyYXksIGJ5dGVzUGVyRWxlbWVudCBdKSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIHZh
ciBvYmplY3QgPSBuZXcgVHlwZWRBcnJheSg2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCks
IDApOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVjdFsxMDAwMDAwXSA9ICJIZWxsbyI7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA1MCksIHRydWUpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDUwKTsKKworICAgIHZhciBvYmplY3QgPSBu
ZXcgVHlwZWRBcnJheSg2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRh
YmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
ICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAwLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTog
ZmFsc2UKKyAgICB9KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksIDApOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hvdWxkQmUo
b2JqZWN0Lmxlbmd0aCwgNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRh
YmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
c3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5
bWJvbCksICdDb2NvYScpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBlZEFycmF5KDY0KTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIGJ5dGVzUGVy
RWxlbWVudCAqIDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdieXRlTGVu
Z3RoJywgJ0NhcHB1Y2Npbm8nKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2J5dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50ICogNjQpOworCisgICAgdmFyIG9i
amVjdCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdieXRlTGVuZ3RoJyksIGJ5dGVzUGVyRWxlbWVudCAqIDY0KTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChvYmplY3QsICdieXRlTGVuZ3RoJywgMjAwMCksIGZhbHNlKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIGJ5dGVzUGVyRWxlbWVudCAq
IDY0KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcgVHlwZWRBcnJheSg2NCk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0
KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNl
dCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0
dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAn
Q29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwg
eworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAg
fSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIGZhbHNlKTsKKyAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAwKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVy
IGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAg
ICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAg
ICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUg
c2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCks
ICdDb2NvYScpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAg
ICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0p
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAg
ICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAg
fSksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAwKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVm
aW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAg
ICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKK30pOworCisKKyhmdW5jdGlvbiBh
cmd1bWVudENhc2UoKSB7CisgICAgZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIHZhciBvYmpl
Y3QgPSBhcmd1bWVudHM7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksIHVuZGVmaW5lZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgNDIpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCB1bmRlZmluZWQpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQy
KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVl
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1
bWVudHM7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAn
aGVsbG8nLCB7CisgICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAgIHdyaXRh
YmxlOiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29j
b2EnLAorICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAg
ICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRC
ZShvYmplY3QubGVuZ3RoLCAwKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAg
ICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91
bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKyAgICAg
ICAgUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksICdDYXBwdWNjaW5vJyk7CisK
KyAgICAgICAgUmVmbGVjdC5zZXQob2JqZWN0LCAnY2FsbGVlJywgJ0NhcHB1Y2Npbm8nKTsKKyAg
ICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnY2FsbGVlJyksICdDYXBwdWNjaW5v
Jyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgICAgIHZhciBvYmplY3Qg
PSBhcmd1bWVudHM7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0LCAnaGVsbG8nLCB7CisgICAgICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0KCkgeworICAgICAg
ICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUg
c2V0dGVyIGV4aXN0cy4KKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVs
bG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAwLCB7CisgICAgICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICdDb2NvYSc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0KCkgeworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3Qs
IDAsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4K
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAg
ICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
LCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAn
Q29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQy
KSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50
czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxs
bycsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29h
JzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwg
J0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBm
YWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9s
LCB7CisgICAgICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAgIHRlc3Qx
KCk7CisgICAgdGVzdDIoKTsKKyAgICB0ZXN0MygpOworICAgIHRlc3Q0KCk7CisgICAgdGVzdDUo
KTsKK30oKSk7CisKKyhmdW5jdGlvbiBhcmd1bWVudFN0cmljdENhc2UoKSB7CisgICAgJ3VzZSBz
dHJpY3QnOworICAgIGZ1bmN0aW9uIHRlc3QxKCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJn
dW1lbnRzOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCB1
bmRlZmluZWQpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycs
IDQyKSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxv
JyksIDQyKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgdW5kZWZp
bmVkKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3QyKCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywg
eworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgICAgICB3cml0YWJsZTogZmFs
c2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmpl
Y3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2Jq
ZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVm
aW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAg
ICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0
Lmxlbmd0aCwgMCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAgICAg
d3JpdGFibGU6IGZhbHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3QzKCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAgICAgIFJlZmxl
Y3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsICdDYXBwdWNjaW5vJyk7CisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAnQ2FwcHVjY2lubycpOworCisgICAgICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIFJlZmxlY3Quc2V0KG9iamVjdCwgJ2Nh
bGxlZScsICdDYXBwdWNjaW5vJyk7CisgICAgICAgIH0sIGBUeXBlRXJyb3I6IFR5cGUgZXJyb3Jg
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgUmVmbGVjdC5nZXQo
b2JqZWN0LCAnY2FsbGVlJyk7CisgICAgICAgIH0sIGBUeXBlRXJyb3I6IFR5cGUgZXJyb3JgKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFy
Z3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
ICdoZWxsbycsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
J0NvY29hJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0
ZXIgZXhpc3RzLgorICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycp
LCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmpl
Y3QsIDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0Nv
Y29hJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwg
NDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksIHRy
dWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2Nv
YScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0
cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3Q1KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywg
eworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29j
b2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNl
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsK
KyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgdGVzdDEoKTsK
KyAgICB0ZXN0MigpOworICAgIHRlc3QzKCk7CisgICAgdGVzdDQoKTsKKyAgICB0ZXN0NSgpOwor
fSgpKTsKKworKGZ1bmN0aW9uIHN0cmluZ09iamVjdENhc2UoKSB7CisgICAgJ3VzZSBzdHJpY3Qn
OworICAgIHZhciBvYmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIp
LCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgb2JqZWN0WzEwMDAw
MDBdID0gIkNvY29hIjsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDUwKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisKKyAg
ICB2YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29h
JywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmpl
Y3QsIDAsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCks
ICdDJyk7CisgICAgc2hvdWxkQmUob2JqZWN0Lmxlbmd0aCwgNSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICB2YWx1ZTogJ0Nv
Y29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisKKyAgICAvLyBMZW5ndGguCisg
ICAgdmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2xlbmd0aCcsICdDYXBwdWNjaW5vJyksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgNSk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFN0
cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgn
KSwgNSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywgMjApLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOwor
CisgICAgdmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgT2JqZWN0LmZyZWV6
ZShvYmplY3QpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAyMCksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgNSk7CisKKyAg
ICB2YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7CisgICAg
ICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAg
ICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hl
bGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAg
IGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAg
ICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCAwLCA0MiksIGZhbHNlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0
KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2Jq
ZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVy
IGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2Nv
YScpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0
KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBn
ZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZp
bmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAg
ICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworfSgpKTsKKworKGZ1bmN0aW9uIGN1
c3RvbVNldHRlcigpIHsKKyAgICAvLyBJbiB0aGlzIGNhc2UsIFJlZ0V4cC5tdWx0aWxpbmUgYmVo
YXZlcyBsaWtlIGEgc2V0dGVyIGJlY2F1c2UgaXQgY29lcmNlIGJvb2xlYW4gdHlwZS4KKyAgICAv
LyBBbnl3YXksIGl0J3MgT0ssIGJlY2F1c2UgUmVnRXhwLm11bHRpbGluZSBpcyBub3Qgc3BlY2lm
aWVkIGluIHRoZSBzcGVjLgorCisgICAgZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KFJlZ0V4cCwgJ211bHRpbGluZScsICdDYXBwdWNjaW5vJyksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4cCwgJ211bHRpbGluZScsIDAp
LCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5l
JyksIGZhbHNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICAgICAgJ3Vz
ZSBzdHJpY3QnOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChSZWdFeHAsICdtdWx0aWxp
bmUnLCAnQ2FwcHVjY2lubycpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
UmVnRXhwLCAnbXVsdGlsaW5lJyksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChSZWdFeHAsICdtdWx0aWxpbmUnLCAwKSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScpLCBmYWxzZSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdDMoKSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAsICdtdWx0aWxpbmUnLCB7CisgICAgICAgICAgICB3
cml0YWJsZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChSZWdFeHAsICdtdWx0aWxpbmUnLCAnQ2FwcHVjY2lubycpLCBmYWxzZSk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScpLCBmYWxzZSk7
CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4cCwgJ211bHRpbGluZScsIDApLCBm
YWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScp
LCBmYWxzZSk7CisgICAgfQorCisgICAgdGVzdDEoKTsKKyAgICB0ZXN0MigpOworICAgIHRlc3Qz
KCk7Cit9KCkpOworCisoZnVuY3Rpb24gcmVnRXhwTGFzdEluZGV4KCkgeworICAgIHZhciByZWdl
eHAgPSBuZXcgUmVnRXhwKCdDb2NvYScpOworICAgIHJlZ2V4cC5sYXN0SW5kZXggPSAnSGVsbG8n
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJlZ2V4cCwgJ2xhc3RJbmRleCcpLCAnSGVsbG8n
KTsKKyAgICByZWdleHAubGFzdEluZGV4ID0gNDI7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
cmVnZXhwLCAnbGFzdEluZGV4JyksIDQyKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KHJl
Z2V4cCwgJ2xhc3RJbmRleCcsICdIZWxsbycpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChyZWdleHAsICdsYXN0SW5kZXgnKSwgJ0hlbGxvJyk7CisKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KHJlZ2V4cCwgJ2xhc3RJbmRleCcsIHsKKyAgICAgICAgdmFsdWU6
IDQyLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQocmVnZXhwLCAnbGFzdEluZGV4JyksIDQyKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChyZWdleHAsICdsYXN0SW5kZXgnLCAnSGVsbG8nKSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KHJlZ2V4cCwgJ2xhc3RJbmRleCcpLCA0Mik7CisKKyAgICBzaG91
bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgcmVn
ZXhwLmxhc3RJbmRleCA9ICJORyI7CisgICAgfSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFz
c2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiBmdW5jdGlv
bkNhc2UoKSB7CisgICAgdmFyIGZ1bmMgPSBmdW5jdGlvbiAoKSB7IH07CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQoZnVuYywgJ2FyZ3VtZW50cycpLCBudWxsKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LnNldChmdW5jLCAnYXJndW1lbnRzJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQoZnVuYywgJ2FyZ3VtZW50cycpLCBudWxsKTsKKworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KGZ1bmMsICdjYWxsZXInKSwgbnVsbCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
ZnVuYywgJ2NhbGxlcicsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1
bmMsICdjYWxsZXInKSwgbnVsbCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNTRh
Y2I3YjVlYjYyZGE5NWI4NWE1OTg3Nzg2ZTEyYjM2MWU1YThkMy4uNDY5ZTQxMWIzYjAyZjU1MGM2
NGY3NWJhNzI2YjUxZTNhZTNhNGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC0zMjAsNyAr
MzIwLDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5U2xvdERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JikKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJ
bmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAg
ICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKQEAgLTM0MSw3ICszNDEsNyBAQCBib29s
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpOwotICAgIHdyYXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7CisgICAgcHV0UmVzdWx0ID0gd3Jh
cHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgcHJvcFZhbHVlLCBpbXBvcnRh
bnQsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBi
ZmRjZWY0ODA4MDU4MTIzZWUwNmJjZDgwOTZlNDJmMjU4OTBkOGYwLi4yMGI5ZmY1MDc0OTJjNmI5
NDJmNmRkYjQwOWMzM2FkNDAzMjNmOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKQEAgLTcwMSw5ICs3MDEsMTAgQEAgdm9pZCB0aHJvd1NlcXVlbmNl
VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKICAgICB0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgIlZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlIik7CiB9CiAKLXZvaWQgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmco
IlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5k
ZXggMDkxNmRlMTM2MDg1ZjI0NTljNTU4YTgxZGFiNGVmNDZlNWJmNzFmNy4uYzg5MDJlNjliZTcw
N2Y2ZDg2OTI5M2JlMWU3NWIxNGVmODY4ZWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFp
bHMgewogdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwog
dm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBhdHRyaWJ1dGVOYW1lKTsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJn
dW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhw
ZWN0ZWRWYWx1ZXMpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVu
Y3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0
IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IDIyNzFmZDlhYjlhN2NhZDBlM2Ez
YjU4YzliOTBlMzg3ZjA4MDk3MjkuLjYyYjdlM2ZjYmNmYjk4ZmFiMjdlOTk0OGZmYzI1OGRhY2Fm
ZmU3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ24K
ICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBpbmRleCkpOwogfQogCi1ib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCitib29sIEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1LDYgKzg1LDcgQEAgYm9vbCBK
U0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1YKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVk
KCkuc2V0SXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1
ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcHV0UmVzdWx0ID0g
IWVjOwogICAgIHJldHVybiAhZWM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyMGE2Zjc0ZjU5NDE1MTBmZjhlM2I2MmQ0YWI2
ZjMwMDYwMmFlYmYuLjI0NTdiOTE4ZThkMTIwNzQ0MGRjZjI5MjQyZTkxNWMzMWUwNzg0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MTAzLDcgKzEwMyw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiB7
CiAgICAgQVNTRVJUKG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSk7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdh
dGNocG9pbnRTZXQodGhpcywgZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb2N1bWVu
dCwgdG9KUyhleGVjLCB0aGlzLCBtX3dyYXBwZWQtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2ludFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgp
LnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCB0b0pTKGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9j
dW1lbnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSwgcHV0UmVzdWx0KTsKIH0KIAogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCBjNjAyMGE2ZGYzYTRlMTQzNGVjMThhMmI0ZjBmZjdjYTc2Y2M0YTA2Li4y
MmVhMWRmZGMzMTA1ZDU0NWIyNTE2NzQ3NjdmZDlkNmI3YzM5ZDQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zNDIsMzIgKzM0
MiwzNSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdQogICAgIHJldHVybiBqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcih0aGlzT2JqZWN0LCAqZnJhbWUsIGV4ZWMs
IElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdp
bmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpT
RE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGlmICgh
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCks
IGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyBzZXR0aW5nICJsb2Nh
dGlvbiIgYXR0cmlidXRlIGNyb3NzLW9yaWdpbi4KLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9jYXRpb24pCi0gICAgICAgICAgICBsb29rdXBQdXQo
ZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQcm9w
SGFzaFRhYmxlLCBzbG90KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iamVjdC0+
cHJpbnRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikgewor
ICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChsb29r
dXBQdXQoZXhlYywgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0
aWNQcm9wSGFzaFRhYmxlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVy
biBwdXRSZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpc09iamVjdC0+cHJpbnRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTRE9NV2lu
ZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNET01XaW5kb3c6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPndy
YXBwZWQoKS5mcmFtZSgpIHx8ICFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+d3JhcHBlZCgpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQmFzZTo6cHV0QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gQmFzZTo6
cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsK
IH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCmlu
ZGV4IDlkZmJiNGQ1M2VmZWJjN2QzMzNkOTM0YzE4NTUxNTBlMDY2MzkxM2UuLjIyOWU2ODM5OThl
MzkyZTUxNjc0OGU2MjU0N2ZlZmY5ODRlYjg3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5
ICszOCw5IEBAIGJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1l
bnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MQXBwbGV0RWxlbWVudCwgQmFzZT4oZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxBcHBsZXRFbGVt
ZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNIVE1MQXBw
bGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1
dFJlc3VsdCkKIHsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1
c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQp
OwogfQogCiBDYWxsVHlwZSBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwq
IGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGEyZTkxODMxMGIx
ZWRhNDllMTdiNWQwODBiOGM0NDllMTE4ZjAxZDIuLjkxOWY2ODY2MmExMWI1ODJhZGFlYjA4MmFm
YzUwYmQ3MjViYTdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpT
SFRNTEVtYmVkRWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbQogICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90PEpTSFRNTEVtYmVkRWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90LCB0aGlzKTsKIH0KIAotYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0
dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhp
cywgc2xvdCk7CisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNI
VE1MRW1iZWRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxs
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVj
dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2Jq
ZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggODNmOThmN2Y3Y2MzZDEwYjUxMzEwNmQ1YzYyOWM1
NjQ2ZGNmNzE2Zi4uNGE4NjQ3Zjg5ZWJjNzAwNzI5ZWM4MzBjYTZkYWM5YjllOGU3MzFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEK
ICAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxP
YmplY3RFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQog
Ci1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewotICAgIHJldHVybiBwbHVnaW5FbGVt
ZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAg
IHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9CiAKIENhbGxUeXBlIEpTSFRNTE9iamVjdEVsZW1l
bnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA1NzBm
OWNmYjg1ZTg5YzhiNWE5NjZlNDk5YjEwOGQ0MTc1M2NjY2IyLi44ZmZkYTEyNmUzMDczYTM2NTYz
MGE0NGMxNTk1NTEwZjgxYTk3OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtNjAsOCArNjAsOSBAQCBib29sIEpTTG9jYXRpb246
OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTTG9jYXRpb246OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogeworICAgIHB1dFJl
c3VsdCA9IGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzUsNyArNzYsNyBAQCBib29s
IEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpT
TG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgIGlmIChzYW1lRG9tYWluQWNjZXNzKQotICAg
ICAgICAgICAgSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IEpTT2JqZWN0OjpwdXQodGhpcywgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMTM3LDggKzEzOCw5IEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6dG9TdHJpbmdGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUs
IHdyYXBwZWQoKS50b1N0cmluZygpKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90eXBlOjpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogeworICAgIHB1dFJlc3VsdCA9
IGZhbHNlOwogICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVl
T2YpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCA3ZWE3M2IxMTEzZDBhZjdjMWNlNzE3YmJiYzg0
YTg4MjY3NzA5NTY5Li4yODY1MzcyZTlhZTcxZjRhNWNhNTA0ZWUwODQ5NTVhYjVlYjE0ZGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIGJvb2wgcGx1Z2luRWxlbWVudEN1
c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgcGx1
Z2luRWxlbWVudEN1c3RvbVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmpl
Y3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3JpcHRP
YmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNjcmlwdE9iamVjdC0+aGFz
UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHNjcmlwdE9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcHV0UmVzdWx0ID0gc2NyaXB0T2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAppbmRleCAzZGY1NTAyN2Yw
MDlkMzI5NjJhN2EyMmY3ZDY5NjM5MmM3YTBjZTVmLi43YTNmODMyZDlkYWE1ZTc5NjA3YmQxYjI3
MWIzOTZjYzI4OGM3MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaApAQCAtNDEsNyArNDEsNyBAQAogICAgIEpTQzo6
RW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwKICAgICBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgYm9v
bCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOwot
ICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTSFRNTEVsZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYpOworICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTSFRNTEVsZW1lbnQqLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgSlNDOjpDYWxsVHlwZSBwbHVn
aW5FbGVtZW50R2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCosIEpTQzo6Q2FsbERhdGEmKTsKIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBlLCBjbGFzcyBCYXNlPiBib29sIHBsdWdpbkVsZW1lbnRD
dXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QsIFR5cGUqIGVsZW1l
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcApp
bmRleCBiMGFhOTg3MjI2MzMwMDYyYTJmNmZjNmUzOWZkYTZhMWUxNWRlNGYwLi45MDc0ZWVlN2M1
MGNkMTA5YWZhNDA4OGNlNDUwOGY0Njg1Njg0NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBKU1N0
b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU4KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTU3RvcmFnZTo6cHV0RGVs
ZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIC8vIE9ubHkgcGVyZm9y
bSB0aGUgY3VzdG9tIHB1dCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBhIG5hdGl2ZSBwcm9w
ZXJ0eSBieSB0aGlzIG5hbWUuCiAgICAgLy8gU2luY2UgaGFzUHJvcGVydHkoKSB3b3VsZCBlbmQg
dXAgY2FsbGluZyBjYW5HZXRJdGVtc0Zvck5hbWUoKSBhbmQgYmUgZm9vbGVkLCB3ZSBuZWVkIHRv
IGNoZWNrCkBAIC0xMTksMTMgKzExOSwxNCBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
ICAgIC8vIGlmIHRydWUsIHRlbGxzIHRoZSBjYWxsZXIgbm90IHRvIGV4ZWN1dGUgdGhlIGdlbmVy
aWMgcHV0KS4gSXQgZG9lcyBub3QgaW5kaWNhdGUgd2hldGhlcgogICAgICAgICAvLyBwdXREZWxl
Z2F0ZSgpIGRpZCBzdWNjZXNzZnVsbHkgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBvciBub3QgKHdo
aWNoIGl0IGRpZG4ndCBpbiB0aGlzCiAgICAgICAgIC8vIGNhc2UgZHVlIHRvIHRoZSBleGNlcHRp
b24pLgorICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlZCgpLnNldEl0ZW0o
cHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgc3RyaW5nVmFsdWUsIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotCisgICAgcHV0UmVzdWx0ID0gIWVjOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc5YTk1NTFlNDZiNTM5M2NhOWQzY2JmMDIxMDY3
OThhNDlhYmM1Y2YuLmRmN2U2OGNkYjAxNDQ0ZWQ4N2I2MTM1MDVlNjhiMWQyNWY4YWU0ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0xMDQwLDkgKzEwNDAsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgR2V0
dGVycwogICAgIGlmICgkb3ZlcnJpZGVzUHV0KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIik7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKSBp
ZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVn
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpO1xuIikgaWYgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn07CiAgICAgfQogCiAgICAg
aWYgKCEkaGFzUGFyZW50KSB7CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
ICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUp
KSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUo
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAg
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImJvb2wgJHtzZXR0ZXJ9KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIj
ZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMTg4OCw3ICsx
ODg4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAg
ICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIG15ICRz
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1l
LCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CiAgICAgICAgIH0KQEAgLTE4OTksNyArMTg5OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIH0KIAogICAgICAgICBteSAkY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgPSAi
c2V0SlMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTtcbiIpOwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICB9CkBAIC0y
MTQzLDEyICsyMTQzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0
dGVyT25Qcm90b3R5cGUifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1l
fVByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJv
dG90eXBlKj4oY2VsbCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBz
dGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QsIHB1dFJlc3VsdCkpXG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KIApAQCAtMjUzOCwxOCArMjUzOSwxOCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9
ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVj
dG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpOwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9CkBAIC0y
NTU3LDI2ICsyNTU4LDI3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBpZiAo
JGhhc0N1c3RvbVNldHRlcikgewogICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlvbiJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9v
bCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwog
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21J
bmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhp
c09iamVjdC0+aW5kZXhTZXR0ZXIoc3RhdGUsIGluZGV4LnZhbHVlKCksIHZhbHVlKTtcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xuIik7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9IHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpO1xuIik7CkBAIC0yNTg0LDE4ICsyNTg2LDE5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkg
e1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0
aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgsIHZhbHVlKTtcbiIpOwotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4i
KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVj
dCwgc2hvdWxkVGhyb3cpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0
ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1
ZSwgc2hvdWxkVGhyb3cpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwg
c2hvdWxkVGhyb3cpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjE5LDcgKzI2MjIsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0
aW9uYWxTdHJpbmc7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke3B1
dEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiYm9vbCAke3B1dEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwpAQCAtMjYz
MSw3ICsyNjM0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkge1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoSW50ZXJmYWNlUmVxdWlyZXNBdHRyaWJ1
dGVzT25JbnN0YW5jZUZvckNvbXBhdGliaWxpdHkoJGludGVyZmFjZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgIyBGYWxsYmFjayB0byB0cnlpbmcgdG8gc2VhcmNoaW5nIHRoZSBwcm90b3R5cGUg
Y2hhaW4gZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkuZ2V0T2JqZWN0KCk7XG4iKTsKQEAgLTI2NDMsOCArMjY0Niw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJy
b3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIs
IFwiJG5hbWVcIik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50
ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQpA
QCAtMjY1NCwxMSArMjY1NiwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53
cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSgq
c3RhdGUsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZl
bnRIYW5kbGVyIikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0
ZW5lci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRldmVudE5hbWUgPSBFdmVudEhhbmRs
ZXJBdHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CkBAIC0yNjczLDYgKzI2NzYsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgOiAic2V0
RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHNldHRlcigqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT53cmFw
cGVkKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1
Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+
IHMvQ29uc3RydWN0b3IkLy87CkBAIC0yNjgzLDEwICsyNjg3LDEwIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIg
LiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yLlxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4i
KTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QuXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qo
c3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiksIHZh
bHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG15ICRwdXRGb3J3YXJkcyA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlB1dEZvcndhcmRzIn07CkBAIC0yNjk2LDcgKzI3MDAsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2F0dHJpYnV0ZVR5cGV9PiBmb3J3
YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLiR7aW1wbEdldHRlckZ1bmN0aW9uTmFt
ZX0oKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghZm9yd2FyZGVkSW1wbClcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXR0cmlidXRlIGlz
IG5vdCBudWxsYWJsZSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBh
IHJlZmVyZW5jZS4KQEAgLTI3MjYsMTQgKzI3MzAsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJU
eXBlKCRhcmdUeXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICF2YWx1
ZS5pbmhlcml0cyhKUyR7YXJnVHlwZX06OmluZm8oKSkpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVF
cnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiRhcmdUeXBlXCIp
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSAu
ICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uZGl0aW9uYWwifSkgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIp
OwogCiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KSkgewogICAgICAgICAgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2RlR2VuZXJhdG9y
LT5WYWxpZEVudW1WYWx1ZXMoJHR5cGUpOwpAQCAtMjc0MiwxMyArMjc0NiwxMyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAZW51bUNo
ZWNrcywgIm5hdGl2ZVZhbHVlICE9IFwiJGVudW1WYWx1ZVwiIik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgIGlmICgi
IC4gam9pbigiICYmICIsIEBlbnVtQ2hlY2tzKSAuICIpXG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlIGVxICJkb3VibGUiIG9yICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBl
cSAiZmxvYXQiKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghc3RkOjppc2Zpbml0ZShuYXRpdmVWYWx1ZSkpIHtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBU
eXBlRXJyb3IpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTI3NTYs
NyArMjc2MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW1wbC5pc1JlYWRPbmx5KCkpIHtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNl
cHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI3ODAsNiArMjc4
NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbC5jb21taXRDaGFuZ2UoKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlv
bk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVp
bXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSkgYW5kIG5vdCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkFy
cmF5QnVmZmVyIikgewpAQCAtMjgwNCw2ICsyODA5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkc2V0
dGVyUmFpc2VzRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTtcbiIpIGlmICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC00NjU1LDggKzQ2NjEsOCBA
QCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGUifSkg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVn
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0
eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpO1xuIik7CiAgICAgfQogCiAgICAgIyBDdXN0b20gZGVm
aW5lT3duUHJvcGVydHkgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAK
aW5kZXggZDZjNWE0MzU0ZTFmZjFhZWRmNWIwYzg1MjZjMjJjM2U1MWIwMjkyOS4uZWY1ZjAzM2Fi
NWIzMGZjODNmYzcyNmVmNGZlNWY2ZjgxNTcyZWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogCiBjbGFzcyBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE3NCwxNiArMTc0LDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RBY3Rp
dmVET01PYmplY3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGI0MGYyMDNhZDRmNzE0NWM2ZDViNTY4MDFiMWM5MmQ2MjEyNjYwOTIuLmRiNWU3OWJm
NDlkYjM5NzFiN2JlNjJkZjY3NTA4MjYyOTQ3MzI2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgpAQCAtMTI5LDE2ICsxMjksMTYgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCAzOGYxNDg4MjlmNjhjZDY0NGI2
NTgzNWRiODFlNWE5ZmFmNWE3YjE3Li4yMzM5NzUzMWQwYmE0MzNjOTU4YzkyNDk3MjBhOThhM2Fh
MDFiZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAog
Y2xhc3MgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzMSwxNiAr
MTMxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3Rvcik7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwog
fQogCiBib29sIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAppbmRleCA5ZjY5ZGVjM2JlOGMyZGI1ZjBjMTI1MDE2OWI1NTI1OWYz
YmNjMzc5Li5iNTU4ZWNlMjRjZTZlNjBmODAyZWZiYjAwN2JiNjBkZDBkYTNiNWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3Mg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NiwxNiArMTY2LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBkMTliNWZkZDc5YjQ0ZGEzYjY3
MzlmZmNmYmZhMjNiMTM0ODFkOGMxLi41ZGEzYzJmOGU3YzcwYTBiNjhkNjczMDAzNWJjOTljMjhi
OTUyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zOSw3ICsz
OSw3IEBACiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
clByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MjAyLDE2ICsyMDIsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUg
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXgg
M2NmN2M5NGY2Yjk0ZTIwMzYwMTgwN2M4Zjc0ZjIzNmM4NzQ4NzM2Ny4uMWZjM2JlODE1NzViYjEx
ODQ1YzdiNmJmNDE5ZGQyYTNiYjI4MzZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBA
IC00Miw3ICs0Miw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNs
YXNzIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xNjUsMTYgKzE2NSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
LXZvaWQgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiB2b2lkIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZTgyYjQ0OWE2NzkzNGJmMTMyYWI0
ZTQ3YmY4Zjk3MmI0MWE5M2JjZC4uYTJkYzFhMjM5YTBkOWNlMmIxZGJlNDRmMTIxMzJhYzNiNWE0
MjY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0RXhjZXB0aW9uQ29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3Mg
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CkBAIC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNl
cHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNl
dEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RFeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXhjZXB0aW9u
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgp
LCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJu
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZTkyMWZmMDljM2U5
N2I4NDIwNjQ1ZWI2Yjk2OTMzOGVhOWQxNTljZC4uNzJjYTE5ZjY5NDA3NWI3OTlhODE3YmMyMzdm
MmM3ZWYxOTFmM2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0x
MjMsMTYgKzEyMywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0g
ICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsK
IH0KIAogSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDFhN2IwZjk3MDUwNjU3ZWU3ZGQxZmI3M2U0ZmIzY2QzMWM2ZDBkZGMuLjkw
MzQ2NTQxMDY5NDY4MzQzZDlkYzQ0YjBlNWU4MThlOGU0ZDViZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCkBAIC04Myw0NyArODMsNDcgQEAKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3Vw
cGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
clN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VTdXBwbGVtZW50YWxTdHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZVN1cHBsZW1lbnRhbFN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0
cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbE5vZGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU5NCwxNjQgKzU5NCwxNjggQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdElu
dGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3Qt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwg
c3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIEpT
VGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3Rh
dGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKLSAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBib29sIHB1dFJl
c3VsdCA9IGZhbHNlOworICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgc2hvdWxkVGhyb3cpOwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShz
dGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJldHVybjsKLSAgICBC
YXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxl
Z2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSkKKyAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDsKKyAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBz
dGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFRlc3RJbnRlcmZhY2U6OnNldElt
cGxlbWVudHNTdGF0aWNBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldEltcGxlbWVudHNTdHIyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZh
Y2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c1N0cjMiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOwog
ICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRJbXBsZW1lbnRzU3RyMygqc3RhdGUsIHZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNO
b2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAiaW1wbGVtZW50c05vZGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
Tm9kZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltcGxlbWVudHNOb2RlKG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUo
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxl
bWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbFN0cjIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxT
dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50
YWw6OnNldFN1cHBsZW1lbnRhbFN0cjIoaW1wbCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZh
Y2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsU3RyMyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMi
KTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0U3VwcGxlbWVudGFsU3RyMygqc3RhdGUsIHZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVt
ZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoaW1wbCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAppbmRleCA1ZGI0YTZlNTBjMDll
NzMxYTliZWEyNjMwNzFlNmZlMzU4ZDc2NmJlLi5mMGI2MGI0YTM5NTRiYzcyMDRiNTNjNDA2Yzc4
ZDVlYWM0ODI1ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dEludGVyZmFjZT4gewogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUo
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IFRlc3RJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgYm9vbCBwdXREZWxlZ2F0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29s
JiBwdXRSZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAog
ICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDIyM2Y5MmU3NzY2MGM3ODJiM2UxYmVhNTViNmQzNDVlYjQzNzkyMzMuLjQwMTJi
ZTUxMjFhZmI4NGE3NThkMWI3NGJmYTdmMjM2YWRkODFhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtNDAsOSArNDAsOSBAQAogCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmli
dXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJp
YnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0
dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY2LDI4ICsxNjYsMjgg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9p
ZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmli
dXRlUldDdXN0b20oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmli
dXRlUldDdXN0b20iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRy
aWJ1dGVSV0N1c3RvbSIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRl
UldDdXN0b20oKnN0YXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDc2OGM4Mzc2YWQ1
NTFlNWUyMGVkMDMzMWU2NTBmNjc2YjZiMDU4YzAuLjMyYzBhNzRlYmQxMGI0Nzg2MTZmNzljZGY0
YzI5ZDhlMWE0MjI1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTMxLDE2ICsxMzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0
KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7
CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGFiZWRhNTM3ZTU4NTliN2Q4NTc3M2RiY2JjYWNmMWZmOTRiNzZjNzEuLjIzMTU4NzU3
NWIyM2RhNjEyZmQ4NjcxZThhYjEzMDIyYWUxOTU2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
clByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MTY0LDE2ICsxNjQsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUg
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGU3YTVjM2UwZDJjZTlj
YjFmNDMyMDA0MDUzYzc3OTg1NGEyYjU2ZjkuLjU1MmY3MTdhZThlMTk3MTk4ZmE1NjM0ZjQxNzFl
OWE4NjRiMWE1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTM2LDkgKzM2LDkgQEAKIC8vIEF0dHJpYnV0
ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
Tm9kZU5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9kZU5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE5vZGVQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE0
NCwzMiArMTQ0LDMyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpTVGVz
dE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5v
ZGUiLCAibmFtZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFs
dWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE5hbWUobmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAppbmRleCBhNzY5NDg1YTFkNDQyNTFlN2NkYTQyNzg3N2M0MWMwMzJiMmNk
YmNkLi44YzI5YzRiNjg3ZWJkNzg1YzFhZDM2NzY2ZDc2ZTBkOWMzMzY1ZTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAKIAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRv
bmx5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhj
ZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZv
aWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CkBAIC0zMzEsODUgKzMzMSw4NSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlz
dGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9p
ZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1p
bmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVy
bWluaXN0aWNXcml0ZWFibGVBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwu
c2V0Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldE5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJF
eGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRl
ckV4Y2VwdGlvbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJt
aW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0
cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXROb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihuYXRpdmVWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9u
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRp
b25BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNT
ZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlv
bkF0dHIobmF0aXZlVmFsdWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGUwYjIxNzg3OTY2MjM5NmZm
NTM4ZmEzNDY4ZDExOTU4NTcxNmFiNGQuLjQxZDVmNTM0MTMyNDU1ZDVmNDhkMjdlZDk0YTJkYTBj
YThjMmNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yMDIsMTU5ICsyMDIsMTU5IEBACiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqQnl0ZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqT2N0ZXRB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialNob3J0QXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9y
dEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9iakxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakxvbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
TG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpMZW5p
ZW50VGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5mb3JnZWFi
bGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpYTUxP
YmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNyZWF0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN5bWJvbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlTeW1ib2xBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdy
YWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVh
bkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3Rv
bUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFy
cmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2Fn
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBl
Q2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5n
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
T2JqT25mb28oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqT25mb28oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIp
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb250ZW50RG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFi
bGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9iak11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFi
bGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqSW1tdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3Ry
YXdiZXJyeShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpTdHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJp
Y3RGbG9hdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iaklkKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9iaklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2go
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZURvdWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVMb25nQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJv
b2xlYW5BdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3Ry
aW5nQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJs
ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZl
ZEVudW1UeXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUHV0
Rm9yd2FyZHNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9y
d2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxs
YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogCiBjbGFzcyBKU1Rlc3RPYmpQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIwNDcsMTEwMCArMjA0NywxMDk3IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAot
dm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9ialByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOwogfQogCi12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVGVz
dE9iajo6c2V0U3RhdGljU3RyaW5nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCks
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
ZyIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nIiksIHZhbHVlKTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG5hdGl2ZVZhbHVlICE9ICIiICYmIG5h
dGl2ZVZhbHVlICE9ICJFbnVtVmFsdWUxIiAmJiBuYXRpdmVWYWx1ZSAhPSAiRW51bVZhbHVlMiIg
JiYgbmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTMiKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEVudW1BdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQ4
X3QgbmF0aXZlVmFsdWUgPSB0b0ludDgoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCeXRlQXR0cihuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9jdGV0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQ4KHN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0T2N0
ZXRBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50MTZfdCBuYXRpdmVWYWx1ZSA9IHRvSW50MTYo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRTaG9ydEF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIHVpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9VSW50MTYoc3RhdGUs
IHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRVbnNpZ25lZFNob3J0QXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJsb25nQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVl
ID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldExvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9u
Z0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgbG9uZyBsb25nIG5hdGl2ZVZhbHVlID0gdG9JbnQ2NChzdGF0ZSwgdmFsdWUsIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldExv
bmdMb25nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVu
c2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5hdGl2ZVZhbHVlID0gdG9VSW50
NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyKG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialRl
c3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRMZW5pZW50VGVzdE9iakF0dHIobmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmciKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwu
c2V0U3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcobmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJYTUxP
YmpBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0WE1MT2JqQXR0cihuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0ZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNyZWF0
ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldENyZWF0ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdy
YWxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIG5hdGl2ZVZhbHVlID0gdG9VSW50MzIo
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFu
QXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3Rl
ZGJvb2xlYW5hdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0
dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZh
bHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVu
dFN0cmluZ0F0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFs
QXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBu
YXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCBuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRD
dXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Qm9vbGVhbkF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIG5h
dGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
Q3VzdG9tVVJMQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50VVJMQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBuYXRpdmVWYWx1ZSA9IHRvRmxvYXQzMkFycmF5KHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRUeXBlZEFycmF5QXR0cihuYXRp
dmVWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50
MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFs
dWUsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSBlYzsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhz
dGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVyaXRzKEpTVGVzdE9i
ajo6aW5mbygpKSkpIHsKICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpDdXN0
b21BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0Q3VzdG9t
QXR0cigqc3RhdGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9uZm9vIik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib25mb28iKTsKICAgICB9CiAgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0
ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2
ZW50LCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0
ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFdpdGhDYWxsV2l0aEFu
ZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCpzdGF0ZSwgYWN0aXZlRE9NV2luZG93KHN0YXRlKSwg
Zmlyc3RET01XaW5kb3coc3RhdGUpLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCBuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGlt
cGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRl
c3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoKnN0YXRlLCBzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8q
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2Ny
aXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCBzY3Jp
cHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVW
YWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCi12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRD
b25kaXRpb25hbEF0dHIxKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi12b2lk
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRDb25kaXRpb25hbEF0
dHIyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi12b2lkIHNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25k
aXRpb25hbEF0dHIzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRp
dmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRDb25kaXRpb25hbEF0dHIzKG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25h
bEF0dHI0IiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRl
LT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNCIp
LCB2YWx1ZSk7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNv
bmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25h
bEF0dHI1IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCi12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y29uZGl0aW9uYWxBdHRyNiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2Fz
dGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0
YXRlLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNv
bmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKIAotdm9pZCBzZXRKU1Rlc3RP
YmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakFueUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0
ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImFueUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IG5hdGl2ZVZhbHVlID0geyBzdGF0ZS0+dm0oKSwgdmFsdWUgfTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRBbnlBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRh
YmxlUG9pbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZH
UG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0TXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9p
bnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
SW1tdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZv
aWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0
cmF3YmVycnkiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldEJsdWViZXJyeShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZs
b2F0Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgZmxvYXQgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Zsb2F0KHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpY3RGbG9hdChuYXRpdmVWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJpZCIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihz
dGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpbXBsLnNldElkKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gb2JqZWN0LgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVl
KTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROdWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5n
U2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVu
ZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGltcGwuc2V0TnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdWYWx1ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0
aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TnVsbGFibGVTdHJpbmdWYWx1ZShuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpBdHRy
aWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChuYXRpdmVWYWx1ZSAhPSAiIiAmJiBuYXRpdmVWYWx1ZSAhPSAiT3B0
aW9uYWxWYWx1ZTEiICYmIG5hdGl2ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMiIgJiYgbmF0aXZl
VmFsdWUgIT0gIk9wdGlvbmFsVmFsdWUzIikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShuYXRp
dmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpQdXRG
b3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUHV0Rm9y
d2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJw
dXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzQXR0cmli
dXRlIik7CiAgICAgfQogICAgIFJlZjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKS5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpOwogICAgIGF1dG8mIGltcGwgPSBm
b3J3YXJkZWRJbXBsLmdldCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldE5hbWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1
dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAg
ICAgfQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKS5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCk7CiAgICAgaWYgKCFmb3J3YXJk
ZWRJbXBsKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRv
JiBpbXBsID0gKmZvcndhcmRlZEltcGw7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUu
dG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0TmFtZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGY0Mzc0
MmRiMzliODViMGY3Mzk2NjYwMmYwZGQ1MGJmOGY0YTljMTIuLjFhZTI5N2RlMmEzNjBlNDA0ODE0
NjJmMTMyNzViMzUyOTlkMDk4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMjAzLDE2ICsyMDMsMTYgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCmluZGV4IDY5M2FlNGM5MDg5MTVkNzg5ZmU4MWQ5YTI5ZWJkODliNGZlYTdjNTIuLjUw
YjE4YzY1ZmNiODQ2MmE0MWFiZjIzZGFiNWRiMGE0ZTY2YmI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgpAQCAtMTY0LDE2ICsxNjQsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWls
dGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDQ5MmUwZDZiMWNiMGViMjQxNTIx
NzMzZTAwNTY3MzI1NzEyNTJlZjEuLjk3NzIyNzk4NjdiMWMyM2UwZDhlMjM1NDYwZWIwYWU4OWMw
YzEwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVh
ZG9ubHlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CkBAIC0yMjMsNDkgKzIyMyw0OSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi12b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5h
dGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAw
LCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRWYWx1ZShuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJj
YWNoZWRWYWx1ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwg
ImNhY2hlZFZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldENhY2hlZFZhbHVlKG5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA5OWUzMGQz
ZDNhZjlmYjU5ZDlmYmMzODY2NjE1ZDRkYTJlNjE4YzVmLi5mMTdlOTUzMjM3Mzc2ZTI0NWQ4YTM5
MGZiZGEzMjE0YzRlYTgxMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTYwLDIwICs2MCwy
MCBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
VW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25n
TG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
clRlc3RTdWJPYmooSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZz
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTMzMiwxMjEgKzMzMiwxMjEgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5hdGl2ZVZhbHVlID0gdG9VSW50NjQoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRVbnNpZ25lZExvbmdM
b25nQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5
cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJp
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVl
LCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IAotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0g
dG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVl
LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2
ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggODBmNjViNmFmOWM2MjcyMjNmMjVkMjJk
ZTYxM2E3YjZkZGIzM2NhNS4uNDdmODY2YmYwZmU2YzZhNjg1MDVkODRiMDU0Mjc2NTgxNWJlZjgy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
YXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNhdHRyaWJ1dGVSZWFkb25seShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTYXR0cmlidXRlUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjQsMTYgKzE2NCwx
NiBAQCBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNhdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNhdHRyaWJ1dGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRy
aWJ1dGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwor
ICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTYXR0cmlidXRl
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNyZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNyZWFkb25seS5jcHAKaW5kZXggNGYxMDVlMDZmMjE4ZTk5NWQyZWM3MjE1N2I3NDBlZjg0Mjgy
MjNkOS4uZjgzMWVhYjIzNDU0ZjUxN2FkZmRmNDI5NzYzMzdlMTM2NzRmNWM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU3JlYWRvbmx5
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0x
MjMsMTYgKzEyMywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNyZWFkb25seVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU3JlYWRvbmx5UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU3Jl
YWRvbmx5OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAppbmRleCBiMjMyYjA2
NWU5NDI2YTQ2NzA4MTZkNWZiMDlhYTBlNjc2OGE1N2RjLi4zZWZhNzE0MjE5MWUyNjk0NGMxOGM1
MzU1YTBjYjEzZTkxYWY2YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgSlNWYWx1ZSBDRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3QpIGNvbnN0CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKLXZvaWQgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRl
ICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Citib29s
IENGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFu
Y2UgKmluc3QsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewogICAgIGNvbnN0IENJbnN0YW5jZSog
aW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0KTsKICAgICBOUE9i
amVjdCogb2JqID0gaW5zdGFuY2UtPmdldE9iamVjdCgpOwpAQCAtNjksMTQgKzY5LDE3IEBAIHZv
aWQgQ0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0
YW5jZSAqaW5zdCwgSlNWYWx1ZSBhCiAgICAgICAgIE5QVmFyaWFudCB2YXJpYW50OwogICAgICAg
ICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCBhVmFsdWUsICZ2YXJpYW50KTsKIAorICAg
ICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICB7CiAgICAgICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7Ci0gICAgICAgICAgICBvYmotPl9jbGFz
cy0+c2V0UHJvcGVydHkob2JqLCBfZmllbGRJZGVudGlmaWVyLCAmdmFyaWFudCk7CisgICAgICAg
ICAgICByZXN1bHQgPSBvYmotPl9jbGFzcy0+c2V0UHJvcGVydHkob2JqLCBfZmllbGRJZGVudGlm
aWVyLCAmdmFyaWFudCk7CiAgICAgICAgICAgICBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRp
b25Ub0V4ZWNTdGF0ZShleGVjKTsKICAgICAgICAgfQogCiAgICAgICAgIF9OUE5fUmVsZWFzZVZh
cmlhbnRWYWx1ZSgmdmFyaWFudCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAg
IHJldHVybiBmYWxzZTsKIH0KIAogfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5oCmlu
ZGV4IDEwNjcyZWQ5ODFiZjliNjg0OGY1NmQzMzMzNDcyY2ViYzdlYWQ4OTcuLjIxOWZlZmVlNDMx
ZmQ0YmU3MzEyNjk2ZTk5NDA1YWQ4ODZlNGRhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVu
dGltZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIENGaWVsZCA6IHB1YmxpYyBGaWVsZCB7CiAg
ICAgQ0ZpZWxkKE5QSWRlbnRpZmllciBpZGVudCkgOiBfZmllbGRJZGVudGlmaWVyKGlkZW50KSB7
IH0KIAogICAgIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5z
dGFuY2UqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVj
U3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBOUElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIF9maWVsZElkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgKaW5kZXggMDAyOTRmYWRkMDU4YWQ4ZDAzZGY3YWIwY2M1MjRkZmI1ZGYyMjZiMi4u
NWZlODVmNWY0YzEzZGI4ZjFiN2JmYzVmMDc1YzBiOWE1ZGM5ZGU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBAIC01Miw3ICs1Miw3IEBACiBjbGFzcyBGaWVsZCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSos
IGNvbnN0IEluc3RhbmNlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRv
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgfkZpZWxkKCkgeyB9
CiB9OwpAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SW5zdGFuY2U+IHsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbnN0YW5jZSgpOwog
CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHV0KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7
IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxC
ZWdpbigpIHsgfQpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIEFycmF5IHsKICAgICBleHBsaWNp
dCBBcnJheShSZWZQdHI8Um9vdE9iamVjdD4mJik7CiAgICAgdmlydHVhbCB+QXJyYXkoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlQXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEpTVmFs
dWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA3Njg5NjZiNDg5OGExNGI3YzNlNzBl
OWY5MDU0Y2VhMThkOWY2NjBmLi5iNThkMWI2MjlmNDgxMDQxNTdhNjI4OTFiMjJlOWUwNTAyZmFh
ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBPYmpjRmllbGQgOiBwdWJsaWMgRmllbGQgewogICAgIE9iamNGaWVs
ZChDRlN0cmluZ1JlZiBuYW1lKTsKICAgICAKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9t
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNW
YWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEl2
YXJTdHJ1Y3RQdHIgX2l2YXI7CkBAIC03OCw4ICs3OCw4IEBAIGNsYXNzIE9iamNBcnJheSA6IHB1
YmxpYyBBcnJheSB7CiBwdWJsaWM6CiAgICAgT2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciwgUmVm
UHRyPFJvb3RPYmplY3Q+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXQoRXhlY1N0
YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVBdChFeGVjU3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludCBp
bmRleCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlQXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBKU1Zh
bHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdDsKICAgICAKICAgICBPYmplY3RT
dHJ1Y3RQdHIgZ2V0T2JqY0FycmF5KCkgY29uc3QgeyByZXR1cm4gX2FycmF5LmdldCgpOyB9CkBA
IC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggYTZjOTAyMzg2MDkw
ZGViMDkwNTEyNjRlZWRkOTg4OWE4MWU3OGUwYS4uNTkwZjIyNTNhOTE0MmIyY2U3ZTNkYzFmODA4
NjkzNjFiZjdhMGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbQpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBbd2ViU2NyaXB0
T2JqZWN0Q2xhc3MoKSBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6dmFsdWUgb3JpZ2luUm9vdE9i
amVjdDpyb290T2JqZWN0LmdldCgpIHJvb3RPYmplY3Q6cm9vdE9iamVjdC5nZXQoKV07CiB9CiAK
LXZvaWQgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBPYmpjRmll
bGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBp
bnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0g
KHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgp
OwogICAgIGlkIHZhbHVlID0gY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KGV4ZWMsIGFWYWx1ZSk7
CkBAIC0xMzgsOSArMTM4LDExIEBAIHZvaWQgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2Uo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTCiAgICAgICAgICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgICAgIE9iamNJbnN0YW5jZTo6bW92
ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewog
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiB9CiAKQEAgLTE1MiwxNiArMTU0LDE2IEBAIE9iamNBcnJheTo6T2JqY0FycmF5KE9iamVjdFN0
cnVjdFB0ciBhLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi12b2lk
IE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRl
eCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Citib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7
CiAgICAgaWYgKCFbX2FycmF5LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5z
ZXJ0T2JqZWN0OmF0SW5kZXg6KV0pIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkFycmF5IGlzIG5vdCBtdXRhYmxlLiIpKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3VudF0pIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFy
cmF5IHNpemUuIikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgCiAgICAgLy8gQWx3YXlzIHRyeSB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhbiBP
YmpDIG9iamVjdCwgc28gaXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUKQEAgLTE3MCw4ICsxNzIsMTAg
QEAgdm9pZCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKQogCiAgICAgQHRyeSB7CiAgICAgICAgIFtfYXJyYXku
Z2V0KCkgaW5zZXJ0T2JqZWN0Om9WYWx1ZS5vYmplY3RWYWx1ZSBhdEluZGV4OmluZGV4XTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0
aW9uKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKQEAgLTIyMSw4ICsyMjUsOSBAQCBib29sIE9iamNGYWxsYmFja09iamVj
dEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90JikKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
akNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKaW5kZXggZWY5OTI0ODI3ODZmNzI1ZDcwZWUxZWRjM2UwNzBjZjZiN2Y4
Y2M1ZS4uYzViM2M0ZjdlN2EyMTc5MjcxMjFiM2M3ZTdjMGYxYTQ5NjcxYjY1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTExLDMxICsxMTEsMjkgQEAgYm9v
bCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlICpleGVjLAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLXZvaWQgUnVu
dGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5
Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHRoaXNPYmplY3Qt
PmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSk7CiAgICAgCi0gICAgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBSdW50aW1lQXJy
YXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQorYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sKQogewogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50
aW1lQXJyYXkqPihjZWxsKTsKICAgICBpZiAoaW5kZXggPj0gdGhpc09iamVjdC0+Z2V0TGVuZ3Ro
KCkpIHsKICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJy
YXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleCwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsK
IH0KIAogYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4
IDU4YmEwNTk2ZTY0OTFhODQ0NjJiZGM2ZWVkODY0YzU5YTI1OTJlYzEuLjAxOGMxMzI3OGRiYTNk
ZDAzMTcxZTUzZWZjMGFkN2RmMGUxMDdlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaApAQCAtNTYsOCArNTYsOCBAQCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNB
cnJheSB7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5k
ZXggZjdmOThiZjhjMGY1MTVlMmE5OGVjNmY5ZTcwMTYzOTg0ZTY3NjY0NS4uYTU3M2UwNWQ3NTli
MDc1NzBkMjYyMWQ4ZTYyNjAzNjQxY2JiNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCkBAIC0xNjEsMjUgKzE2MSwyNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFBy
b3BlcgogICAgIHJldHVybiBpbnN0YW5jZS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFJ1
bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOwog
ICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewogICAgICAgICB0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihleGVjKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0
LT5tX2luc3RhbmNlOwogICAgIGluc3RhbmNlLT5iZWdpbigpOwogCiAgICAgLy8gU2V0IHRoZSB2
YWx1ZSBvZiB0aGUgcHJvcGVydHkuCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBGaWVs
ZCAqYUZpZWxkID0gaW5zdGFuY2UtPmdldENsYXNzKCktPmZpZWxkTmFtZWQocHJvcGVydHlOYW1l
LCBpbnN0YW5jZS5nZXQoKSk7CiAgICAgaWYgKGFGaWVsZCkKLSAgICAgICAgYUZpZWxkLT5zZXRW
YWx1ZVRvSW5zdGFuY2UoZXhlYywgaW5zdGFuY2UuZ2V0KCksIHZhbHVlKTsKKyAgICAgICAgcmVz
dWx0ID0gYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFuY2UoZXhlYywgaW5zdGFuY2UuZ2V0KCksIHZh
bHVlKTsKICAgICBlbHNlIGlmICghaW5zdGFuY2UtPnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKLSAgICAgICAgaW5zdGFuY2UtPnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmVzdWx0ID0g
aW5zdGFuY2UtPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIAogICAgIGluc3RhbmNlLT5lbmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29s
IFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggYjNiNjQw
YWNjNTRmMzQ4ZGM1YWZlOTJjNWYzOGZlNjIyOTQ4NWY4MS4uODFkNGViZDNiNGRiYjcwOTkxMTVk
YTEwMjgyYjI5ZmJmZmIxODZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgUnVudGltZU9iamVjdCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBz
dGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UuaAppbmRleCAxM2UzMmJhNjIwZTM1MDdlMDQyYTkwZTgxNzQ0M2Q5
M2FmNjNiNjAyLi5hZmJhMTAyMGQ5NWRhZWI2M2UxN2M3ZmI5MzIxNDFhZThlOTRkODdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCkBA
IC00OSw3ICs0OSw3IEBAIGNsYXNzIFByb3h5SW5zdGFuY2UgOiBwdWJsaWMgSlNDOjpCaW5kaW5n
czo6SW5zdGFuY2UgewogICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBmaWVsZE5hbWVkKEpTQzo6
UHJvcGVydHlOYW1lKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmaWVsZFZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqKSBjb25zdDsKLSAgICB2b2lkIHNldEZp
ZWxkVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkJpbmRpbmdzOjpGaWVsZCosIEpT
Qzo6SlNWYWx1ZSkgY29uc3Q7CisgICAgYm9vbCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OwogICAg
IAogCiAgICAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KiBpbnN0YW5jZVByb3h5KCkgeyBy
ZXR1cm4gbV9pbnN0YW5jZVByb3h5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCA5Y2QwZmJjMWI0YzI1NGRhNTRjNDE0NmVk
ZTIwNThkN2NjMGFkYzMyLi42NzE0ZThjZjRhYjI3NTM2MGRkNmEwOTkxNDZjNTRkMzA3NWFhYmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
SlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29u
c3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVU
b0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CiAg
ICAgCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJJZGVudGlmaWVyOwogfTsKQEAgLTkxLDkgKzkxLDkg
QEAgSlNWYWx1ZSBQcm94eUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
UHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+ZmllbGRWYWx1ZShleGVjLCB0aGlzKTsKIH0KICAg
ICAKLXZvaWQgUHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorYm9vbCBQcm94
eUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5j
ZSogaW5zdGFuY2UsIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgc3RhdGljX2Nhc3Q8Y29u
c3QgUHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+c2V0RmllbGRWYWx1ZShleGVjLCB0aGlzLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0
YW5jZSktPnNldEZpZWxkVmFsdWUoZXhlYywgdGhpcywgdmFsdWUpOwogfQogCiBjbGFzcyBQcm94
eU1ldGhvZCA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpNZXRob2QgewpAQCAtNDE2LDEwICs0MTYs
MTAgQEAgSlNDOjpKU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmZpZWxkVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBGaWVsZCogZmllbGQpIGNvbnMKICAgICByZXR1cm4gbV9pbnN0YW5jZVByb3h5
LT5kZW1hcnNoYWxWYWx1ZShleGVjLCAoY2hhciopQ0ZEYXRhR2V0Qnl0ZVB0cihyZXBseS0+bV9y
ZXN1bHQuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocmVwbHktPm1fcmVzdWx0LmdldCgpKSk7CiB9
CiAgICAgCi12b2lkIFByb3h5SW5zdGFuY2U6OnNldEZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBGaWVsZCogZmllbGQsIEpTVmFsdWUgdmFsdWUpIGNvbnN0Citib29sIFByb3h5SW5z
dGFuY2U6OnNldEZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQs
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2luc3RhbmNlUHJveHkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHVpbnQ2NF90IHNl
cnZlcklkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBQcm94eUZpZWxkKj4oZmllbGQpLT5z
ZXJ2ZXJJZGVudGlmaWVyKCk7CiAgICAgdWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0YW5jZVBy
b3h5LT5uZXh0UmVxdWVzdElEKCk7CkBAIC00MzQsMTAgKzQzNCwxMSBAQCB2b2lkIFByb3h5SW5z
dGFuY2U6OnNldEZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQs
IEpTVmFsdWUgdgogICAgIGlmIChtX2luc3RhbmNlUHJveHkpCiAgICAgICAgIG1faW5zdGFuY2VQ
cm94eS0+cmVsZWFzZUxvY2FsT2JqZWN0KHZhbHVlKTsKICAgICBpZiAoa3IgIT0gS0VSTl9TVUND
RVNTKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICB3
YWl0Rm9yUmVwbHk8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJl
cXVlc3RJRCk7CiAgICAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojptb3ZlR2xvYmFsRXhj
ZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUHJv
eHlJbnN0YW5jZTo6aW52YWxpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggYTkwNWIzZGYw
YjY4YWM0OGVlMmZhMWZjZjJhODdmMDMxNWFiZDdiZC4uZDU2MWFlMTQ4YzIyZjU5N2Q3ZjFhZTg0
Y2I3ZDBkZjkxYzBjYTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMjk3LDI3ICsyOTcsMjcg
QEAgYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
SlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9vbCBK
U05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
SlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlk
ZW50aWZpZXIocHJvcGVydHlOYW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5
bWJvbC4KICAgICBpZiAoIW5wSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xh
c3MtPmhhc1Byb3BlcnR5IHx8ICF0aGlzT2JqZWN0LT5tX25wT2JqZWN0LT5fY2xhc3MtPmhhc1By
b3BlcnR5KHRoaXNPYmplY3QtPm1fbnBPYmplY3QsIG5wSWRlbnRpZmllcikpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSB0aHJvdyBhbiBleGNlcHRpb24gaGVyZT8KLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0aGlzT2JqZWN0
LT5tX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5QVmFyaWFudCB2YXJpYW50OwogICAgIHRoaXNPYmpl
Y3QtPm1fb2JqZWN0TWFwLT5jb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHZhbHVlLCB2
YXJpYW50KTsKQEAgLTMyNyw5ICszMjcsMTAgQEAgdm9pZCBKU05QT2JqZWN0OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAg
ICAvLyB0aGUgY2FsbCBoYXMgZmluaXNoZWQuCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjpQbHVn
aW5Qcm90ZWN0b3IgcHJvdGVjdG9yKHRoaXNPYmplY3QtPm1fb2JqZWN0TWFwKTsKIAorICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgewogICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKLSAgICAgICAgdGhpc09i
amVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0LCBucElkZW50aWZpZXIsICZ2YXJpYW50KTsKKyAgICAgICAgcmVzdWx0ID0gdGhpc09iamVj
dC0+bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0
LCBucElkZW50aWZpZXIsICZ2YXJpYW50KTsKIAogICAgICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKIApAQCAtMzM3LDYgKzMzOCw3
IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgfQogCiAgICAgcmVsZWFzZU5QVmFyaWFu
dFZhbHVlKCZ2YXJpYW50KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIEpTTlBPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggYTZiYmY3Yzg3YzRjOThhNDZj
ZTU5ZWNlZmIzNjYwZTA3ZWFiMjRlNi4uOGJhZmViMDYwYTIxMDY2ZDhlYWE2MDg3NGMwM2FjOTlm
MGNmNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIEpTTlBPYmpl
Y3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYp
OworICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDdkMWM4MDQ0NTlkYTYxNDk3YTBhMmNlMzU5MmUzYzNmMjNhZWI4OTcuLjVj
NjUwZWVhYzA2YTQ2YTFhMzhmMjg0Yzc2YmUyYjA3N2U3MmI4YTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNi0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5zZXQgd2l0aG91dCByZWNlaXZlciBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGpzL2RvbS9yZWZsZWN0LXNldC1vbnRvLWRvbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2RvbS9yZWZsZWN0LXNldC1vbnRvLWRvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzOiBBZGRlZC4KKwogMjAx
Ni0wMy0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEdldCBhIFJlbW90ZU9iamVjdCBvciBPYmplY3RQcmV2aWV3IGZyb20g
SGVhcFNuYXBzaG90IE9iamVjdCBJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vcmVmbGVjdC1zZXQtb250by1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
ZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNDhk
NTJlMjA2ZmI2NjBlNjVhNmJlMmMxNTRkODYzYzJmODJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDczIEBACitUZXN0IGVuc3VyZXMgUmVmbGVjdC5zZXQgZnVuY3Rpb25hbGl0eSB3aXRoIERP
TSBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ3VzdG9tQWNjZXNz
b3Igc2V0dGVycyBmb3IgRE9NIG9iamVjdHMuIFRoZXNlIHNldHRlcnMgYXJlIHRyZWF0ZWQgYXMg
c2V0dGVycyBpbiBFQ01BMjYyLiBSZWZsZWN0LnNldCByZXR1cm5zIHRydWUgYmVjYXVzZSBhIHNl
dHRlciBpcyBmb3VuZC4KK1BBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keSwgInNjcm9sbFRv
cCIsICIjSGVsbG8iKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHksICJz
Y3JvbGxUb3AiKSBpcyBub3QgIiNIZWxsbyIKK1BBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9k
eSwgInNjcm9sbFRvcCIsIDApIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9k
eSwgInNjcm9sbFRvcCIpIGlzIDAKK0N1c3RvbUFjY2Vzc29yIHdpdGggUmVhZE9ubHkKK1BBU1Mg
UmVmbGVjdC5zZXQoZG9jdW1lbnQsICJjb21wYXRNb2RlIiwgZmFsc2UpIGlzIGZhbHNlCitQQVNT
IFJlZmxlY3QuZ2V0KGRvY3VtZW50LCAiY29tcGF0TW9kZSIpIGlzICJCYWNrQ29tcGF0IgorQ3Vz
dG9tQWNjZXNzb3Igd2l0aG91dCBzZXR0ZXIgZm9yIERPTSBvYmplY3RzCitQQVNTIFJlZmxlY3Qu
c2V0KHdpbmRvdy5oaXN0b3J5LCAibGVuZ3RoIiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKSBp
cyBmYWxzZQorUEFTUyBSZWZsZWN0LmdldCh3aW5kb3cuaGlzdG9yeSwgImxlbmd0aCIpIGlzIG5v
dCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIKK0N1c3RvbVZhbHVlIHNldHRlcnMuCitQQVNTIFJl
ZmxlY3Quc2V0KHdpbmRvdywgIkV2ZW50IiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKSBpcyB0
cnVlCitQQVNTIFJlZmxlY3QuZ2V0KHdpbmRvdywgIkV2ZW50IikgaXMgImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20iCitDdXN0b21WYWx1ZSBzZXR0ZXJzIHdpdGggd3JpdGFibGU9ZmFsc2UuCitQQVNT
IFJlZmxlY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAiTW91c2VFdmVudCIsIHsKKyAgICB3cml0
YWJsZTogZmFsc2UKK30pIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5zZXQod2luZG93LCAiTW91c2VF
dmVudCIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikgaXMgZmFsc2UKK1BBU1MgUmVmbGVjdC5n
ZXQod2luZG93LCAiTW91c2VFdmVudCIpIGlzIG9yaWdpbmFsTW91c2VFdmVudAorcHV0RGVsZWdh
dGUgQ3VzdG9tQWNjZXNzb3Igc2V0dGVycyBmb3IgRE9NIG9iamVjdHMuCitQQVNTIFJlZmxlY3Qu
c2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIsICIjSGVsbG8iKSBpcyB0cnVlCitQQVNTIFJl
ZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIpIGlzICIjSGVsbG8iCitQQVNTIFJl
ZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIsICIjT1VUIikgaXMgdHJ1ZQorUEFT
UyBSZWZsZWN0LmdldChkb2N1bWVudC5sb2NhdGlvbiwgImhhc2giKSBpcyAiI09VVCIKK1BBU1Mg
UmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sIDAsICIjSGVsbG8iKSBpcyB0cnVlCitQQVNT
IFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwKSBpcyAiI0hlbGxvIgorUEFTUyBSZWZs
ZWN0LnNldChkb2N1bWVudC5sb2NhdGlvbiwgMCwgIiNPVVQiKSBpcyB0cnVlCitQQVNTIFJlZmxl
Y3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwKSBpcyAiI09VVCIKK3B1dERlbGVnYXRlIEN1c3Rv
bUFjY2Vzc29yIHdpdGhvdXQgc2V0dGVyIGZvciBET00gb2JqZWN0cworUEFTUyBSZWZsZWN0LnNl
dChkb2N1bWVudC5sb2NhdGlvbiwgIm9yaWdpbiIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikg
aXMgZmFsc2UKK05QQVBJIG9iamVjdCB3aXRoIFJlZmxlY3Quc2V0CitQQVNTIFJlZmxlY3Quc2V0
KG5wb2JqZWN0LCAiQ29jb2EiLCAiU3dlZXQiKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KG5w
b2JqZWN0LCAiQ29jb2EiKSBpcyAiU3dlZXQiCitQQVNTIFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
bnBvYmplY3QsICJDb2NvYSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pIGlzIHRydWUKK1BB
U1MgUmVmbGVjdC5zZXQobnBvYmplY3QsICJDb2NvYSIsICJIZWxsbyIpIGlzIGZhbHNlCitQQVNT
IFJlZmxlY3QuZ2V0KG5wb2JqZWN0LCAiQ29jb2EiKSBpcyAiU3dlZXQiCitQQVNTIFJlZmxlY3Qu
c2V0KG5wb2JqZWN0LCAwLCAiU3dlZXQiKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KG5wb2Jq
ZWN0LCAwKSBpcyAiU3dlZXQiCitQQVNTIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkobnBvYmplY3Qs
IDAsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5zZXQo
bnBvYmplY3QsIDAsICJIZWxsbyIpIGlzIGZhbHNlCitQQVNTIFJlZmxlY3QuZ2V0KG5wb2JqZWN0
LCAwKSBpcyAiU3dlZXQiCitET01TdHJpbmdNYXAKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQu
Ym9keS5kYXRhc2V0LCAiY29jb2EiKSBpcyAiY2FwcHVjY2lubyIKK1BBU1MgUmVmbGVjdC5zZXQo
ZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiLCAic3dlZXQiKSBpcyB0cnVlCitQQVNTIFJl
ZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIikgaXMgInN3ZWV0IgorUEFT
UyBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYS1jYXBwdWNjaW5vIiwg
InN3ZWV0IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMi4KK1BBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwLCAic3dlZXQi
KSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgMCkgaXMg
InN3ZWV0IgorQ3VzdG9tSW5kZXhlZFNldHRlcgorUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsIDAp
LnZhbHVlIGlzICJjb2NvYSIKK1BBU1MgUmVmbGVjdC5nZXQoc2VsZWN0LCAibGVuZ3RoIikgaXMg
MworUEFTUyBSZWZsZWN0LnNldChzZWxlY3QsIDAsIG9wdGlvbikgaXMgdHJ1ZQorUEFTUyBSZWZs
ZWN0LmdldChzZWxlY3QsIDApLnZhbHVlIGlzICJtb2NoYSIKK1BBU1MgUmVmbGVjdC5nZXQoc2Vs
ZWN0LCAibGVuZ3RoIikgaXMgMworUEFTUyBSZWZsZWN0LnNldChzZWxlY3QsIDQyLCBvcHRpb24p
IGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoc2VsZWN0LCAibGVuZ3RoIikgaXMgNDIKK1BBU1Mg
UmVmbGVjdC5zZXQoc2VsZWN0LCA0NCwgb3B0aW9uMikgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0Lmdl
dChzZWxlY3QsIDQ0KS52YWx1ZSBpcyAia2lsaW1hbmphcm8iCitQQVNTIFJlZmxlY3Quc2V0KHNl
bGVjdCwgMjAsICJLaWxpbWFuamFybyIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21h
dGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9y
ZWZsZWN0LXNldC1vbnRvLWRvbS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0
LW9udG8tZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FiNzM2YjEzZThhZjA2OTE2MzRmYjJiMGJlNWQz
MjM1MTA3ZTgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9yZWZsZWN0
LXNldC1vbnRvLWRvbS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGVtYmVkIGlkPSJ0ZXN0UGx1Z2luIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LW5ldHNjYXBlIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PC9lbWJlZD4KKzxzZWxlY3QgaWQ9
InRlc3RTZWxlY3QiPgorICAgIDxvcHRpb24gdmFsdWU9ImNvY29hIj5Db2NvYTwvb3B0aW9uPgor
ICAgIDxvcHRpb24gdmFsdWU9ImNhcHB1Y2Npbm8iIHNlbGVjdGVkPkNhcHB1Y2Npbm88L29wdGlv
bj4KKyAgICA8b3B0aW9uIHZhbHVlPSJtYXRjaGEiPk1hdGNoYTwvb3B0aW9uPgorPC9zZWxlY3Q+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9z
Y3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1kb20uanMgYi9MYXlvdXRUZXN0cy9qcy9kb20v
c2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3Njk2NDRm
YzkzZmYyMGJkNDdiN2IxM2ZlYjQyNmUzZmQ5MDRmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzCkBAIC0w
LDAgKzEsODYgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGVuc3VyZXMgUmVmbGVjdC5zZXQgZnVuY3Rp
b25hbGl0eSB3aXRoIERPTSBvYmplY3RzLiIpOworCitkZWJ1ZygiQ3VzdG9tQWNjZXNzb3Igc2V0
dGVycyBmb3IgRE9NIG9iamVjdHMuIFRoZXNlIHNldHRlcnMgYXJlIHRyZWF0ZWQgYXMgc2V0dGVy
cyBpbiBFQ01BMjYyLiBSZWZsZWN0LnNldCByZXR1cm5zIHRydWUgYmVjYXVzZSBhIHNldHRlciBp
cyBmb3VuZC4iKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LCAic2Nyb2xs
VG9wIiwgIiNIZWxsbyIpYCwgYHRydWVgKTsKK3Nob3VsZE5vdEJlKGBSZWZsZWN0LmdldChkb2N1
bWVudC5ib2R5LCAic2Nyb2xsVG9wIilgLCBgIiNIZWxsbyJgKTsKK3Nob3VsZEJlKGBSZWZsZWN0
LnNldChkb2N1bWVudC5ib2R5LCAic2Nyb2xsVG9wIiwgMClgLCBgdHJ1ZWApOworc2hvdWxkQmUo
YFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHksICJzY3JvbGxUb3AiKWAsIGAwYCk7CisKK2RlYnVn
KCJDdXN0b21BY2Nlc3NvciB3aXRoIFJlYWRPbmx5Iik7CitzaG91bGRCZShgUmVmbGVjdC5zZXQo
ZG9jdW1lbnQsICJjb21wYXRNb2RlIiwgZmFsc2UpYCwgYGZhbHNlYCk7CitzaG91bGRCZShgUmVm
bGVjdC5nZXQoZG9jdW1lbnQsICJjb21wYXRNb2RlIilgLCBgIkJhY2tDb21wYXQiYCk7CisKK2Rl
YnVnKCJDdXN0b21BY2Nlc3NvciB3aXRob3V0IHNldHRlciBmb3IgRE9NIG9iamVjdHMiKTsKK3No
b3VsZEJlKGBSZWZsZWN0LnNldCh3aW5kb3cuaGlzdG9yeSwgImxlbmd0aCIsICJodHRwOi8vd3d3
LmV4YW1wbGUuY29tIilgLCBgZmFsc2VgKTsKK3Nob3VsZE5vdEJlKGBSZWZsZWN0LmdldCh3aW5k
b3cuaGlzdG9yeSwgImxlbmd0aCIpYCwgYCJodHRwOi8vd3d3LmV4YW1wbGUuY29tImApOworCitk
ZWJ1ZygiQ3VzdG9tVmFsdWUgc2V0dGVycy4iKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldCh3aW5k
b3csICJFdmVudCIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIilgLCBgdHJ1ZWApOworc2hvdWxk
QmUoYFJlZmxlY3QuZ2V0KHdpbmRvdywgIkV2ZW50IilgLCAgYCJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tImApOworCitkZWJ1ZygiQ3VzdG9tVmFsdWUgc2V0dGVycyB3aXRoIHdyaXRhYmxlPWZhbHNl
LiIpOwordmFyIG9yaWdpbmFsTW91c2VFdmVudCA9IE1vdXNlRXZlbnQ7CitzaG91bGRCZShgUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICJNb3VzZUV2ZW50IiwgeworICAgIHdyaXRhYmxl
OiBmYWxzZQorfSlgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KHdpbmRvdywgIk1v
dXNlRXZlbnQiLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpYCwgYGZhbHNlYCk7CitzaG91bGRC
ZShgUmVmbGVjdC5nZXQod2luZG93LCAiTW91c2VFdmVudCIpYCwgYG9yaWdpbmFsTW91c2VFdmVu
dGApOworCitkZWJ1ZygicHV0RGVsZWdhdGUgQ3VzdG9tQWNjZXNzb3Igc2V0dGVycyBmb3IgRE9N
IG9iamVjdHMuIik7CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJo
YXNoIiwgIiNIZWxsbyIpYCwgYHRydWVgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVu
dC5sb2NhdGlvbiwgImhhc2giKWAsIGAiI0hlbGxvImApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0
KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIsICIjT1VUIilgLCBgdHJ1ZWApOworc2hvdWxkQmUo
YFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIpYCwgYCIjT1VUImApOworc2hv
dWxkQmUoYFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwLCAiI0hlbGxvIilgLCBgdHJ1
ZWApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwKWAsIGAiI0hl
bGxvImApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwLCAiI09V
VCIpYCwgYHRydWVgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVudC5sb2NhdGlvbiwg
MClgLCBgIiNPVVQiYCk7CisKK2RlYnVnKCJwdXREZWxlZ2F0ZSBDdXN0b21BY2Nlc3NvciB3aXRo
b3V0IHNldHRlciBmb3IgRE9NIG9iamVjdHMiKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChkb2N1
bWVudC5sb2NhdGlvbiwgIm9yaWdpbiIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIilgLCBgZmFs
c2VgKTsKKworZGVidWcoIk5QQVBJIG9iamVjdCB3aXRoIFJlZmxlY3Quc2V0Iik7Cit2YXIgbnBv
YmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFBsdWdpbiIpOworc2hvdWxkQmUo
YFJlZmxlY3Quc2V0KG5wb2JqZWN0LCAiQ29jb2EiLCAiU3dlZXQiKWAsIGB0cnVlYCk7CitzaG91
bGRCZShgUmVmbGVjdC5nZXQobnBvYmplY3QsICJDb2NvYSIpYCwgYCJTd2VldCJgKTsKK3Nob3Vs
ZEJlKGBSZWZsZWN0LmRlZmluZVByb3BlcnR5KG5wb2JqZWN0LCAiQ29jb2EiLCB7CisgICAgd3Jp
dGFibGU6IGZhbHNlCit9KWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQobnBvYmpl
Y3QsICJDb2NvYSIsICJIZWxsbyIpYCwgYGZhbHNlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQo
bnBvYmplY3QsICJDb2NvYSIpYCwgYCJTd2VldCJgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChu
cG9iamVjdCwgMCwgIlN3ZWV0IilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KG5w
b2JqZWN0LCAwKWAsIGAiU3dlZXQiYCk7CitzaG91bGRCZShgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShucG9iamVjdCwgMCwgeworICAgIHdyaXRhYmxlOiBmYWxzZQorfSlgLCBgdHJ1ZWApOworc2hv
dWxkQmUoYFJlZmxlY3Quc2V0KG5wb2JqZWN0LCAwLCAiSGVsbG8iKWAsIGBmYWxzZWApOworc2hv
dWxkQmUoYFJlZmxlY3QuZ2V0KG5wb2JqZWN0LCAwKWAsIGAiU3dlZXQiYCk7CisKK2RlYnVnKCJE
T01TdHJpbmdNYXAiKTsKK2RvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCJkYXRhLWNvY29hIiwg
ImNhcHB1Y2Npbm8iKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFz
ZXQsICJjb2NvYSIpYCwgYCJjYXBwdWNjaW5vImApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRv
Y3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIiwgInN3ZWV0IilgLCBgdHJ1ZWApOworc2hvdWxk
QmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIilgLCBgInN3ZWV0
ImApOworc2hvdWxkVGhyb3coYFJlZmxlY3Quc2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNv
Y29hLWNhcHB1Y2Npbm8iLCAic3dlZXQiKWApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRvY3Vt
ZW50LmJvZHkuZGF0YXNldCwgMCwgInN3ZWV0IilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxl
Y3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgMClgLCBgInN3ZWV0ImApOworCitkZWJ1Zygi
Q3VzdG9tSW5kZXhlZFNldHRlciIpOwordmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0U2VsZWN0Iik7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoc2VsZWN0LCAwKS52YWx1
ZWAsIGAiY29jb2EiYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoc2VsZWN0LCAibGVuZ3RoIilg
LCBgM2ApOwordmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwor
b3B0aW9uLnZhbHVlID0gIm1vY2hhIjsKK29wdGlvbi50ZXh0Q29udGVudCA9ICJNb2NoYSI7Citz
aG91bGRCZShgUmVmbGVjdC5zZXQoc2VsZWN0LCAwLCBvcHRpb24pYCwgYHRydWVgKTsKK3Nob3Vs
ZEJlKGBSZWZsZWN0LmdldChzZWxlY3QsIDApLnZhbHVlYCwgYCJtb2NoYSJgKTsKK3Nob3VsZEJl
KGBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKWAsIGAzYCk7CitzaG91bGRCZShgUmVmbGVj
dC5zZXQoc2VsZWN0LCA0Miwgb3B0aW9uKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5n
ZXQoc2VsZWN0LCAibGVuZ3RoIilgLCBgNDJgKTsgIC8vIFVwZGF0ZSB2YWxpZGl0eSBwcmV2ZW50
IHVzIHRvIGluc2VydCBkdXBsaWNhdGUgb3B0aW9ucy4KKwordmFyIG9wdGlvbjIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKK29wdGlvbjIudmFsdWUgPSAia2lsaW1hbmphcm8i
Oworb3B0aW9uMi50ZXh0Q29udGVudCA9ICJLaWxpbWFuamFybyI7CitzaG91bGRCZShgUmVmbGVj
dC5zZXQoc2VsZWN0LCA0NCwgb3B0aW9uMilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3Qu
Z2V0KHNlbGVjdCwgNDQpLnZhbHVlYCwgYCJraWxpbWFuamFybyJgKTsKK3Nob3VsZFRocm93KGBS
ZWZsZWN0LnNldChzZWxlY3QsIDIwLCAiS2lsaW1hbmphcm8iKWApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273716</attachid>
            <date>2016-03-11 03:07:01 -0800</date>
            <delta_ts>2016-03-11 03:22:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160311200647.patch</filename>
            <type>text/plain</type>
            <size>415771</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTY0MGQwODc4NmQ1Y2UzMTVhZjA2NGM0MzNmODdiMTkwODFhZmUzLi4xODNiM2YzNzViODJkZGRk
YTljYzcwYjlmMzNiOGJiZDllMWM0ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTcgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVj
ZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFJlZmxlY3Quc2V0LgorICAgICAgICBUaGUgY2hh
bGxlbmdlIGluIHRoaXMgcGF0Y2ggaXMgUmVmbGVjdC5zZXQgcmVxdWlyZXMgYm9vbGVhbiByZXN1
bHQgb2YgW1tTZXRdXSwKKyAgICAgICAgdGhpcyBpcyBub3QgcHJvcGFnYXRlZCBpbiB0aGUgcHJl
dmlvdXMgSlNDIHB1dCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgdGhlIHB1dCBhbmQgcHV0QnlJbmRleCBzaWduYXR1cmUgZnJvbSBgdm9pZCBwdXQoLi4uKWAg
YW5kIGB2b2lkIHB1dEJ5SW5kZXgoLi4uKWAgdG8gYGJvb2wgcHV0KC4uLilgIGFuZCBgYm9vbCBw
dXRCeUluZGV4KC4uLilgLAorICAgICAgICBtb3JlIGNvbnNpc3RlbnQgc3R5bGUgdG8gdGhlIEVD
TUEyNjIgc3BlYydzIFtbU2V0XV0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBzbyBt
YW55IHBhcnQgb2YgV2ViS2l0LiBCdXQgYWxtb3N0IGFsbCB0aGUgY2hhbmdlcyBhcmUgbWVjaGFu
aWNhbCBvbmVzLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBzdXBw
b3J0IHJlY2VpdmVyIG1vZGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICBUaGlzIHdpbGwgYmUg
c3VwcG9ydGVkIGluIHRoZSBzdWJzZXF1ZW50IHBhdGNoWzFdLgorCisgICAgICAgIFsxXTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NAorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleCk6Cisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyU2NvcGU6OnB1dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAg
ICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5j
cHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dElu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZp
cm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dEdldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpkZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlC
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAg
ICAgIChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAg
KEpTQzo6bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21t
b24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICog
cnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90
Lmg6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdFNldCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAo
SlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkpOgorICAgICAgICAoSlNDOjpT
cGFyc2VBcnJheUVudHJ5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgICogdGVz
dHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanM6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHJlY2VpdmVyQ2FzZS5vYmpl
Y3QyLnNldCBDb2NvYSk6CisgICAgICAgIChyZWNlaXZlckNhc2UpOgorICAgICAgICAocHJveHlD
YXNlKToKKyAgICAgICAgKG9iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChv
YmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcnJheUNhc2Uuc2V0IGdldCBzaG91
bGRCZSk6CisgICAgICAgIChhcnJheUNhc2UuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5
QnVmZmVyQ2FzZS5zZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5QnVmZmVyQ2FzZS5n
ZXQgc2hvdWxkQmUpOgorICAgICAgICAoc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChnZXQg
c2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRDYXNlLnRlc3QxKToKKyAgICAgICAgKGFyZ3Vt
ZW50Q2FzZS50ZXN0Mik6CisgICAgICAgIChhcmd1bWVudENhc2UudGVzdDMpOgorICAgICAgICAo
YXJndW1lbnRDYXNlLnRlc3Q0LnNldCBnZXQgc2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRD
YXNlLnRlc3Q1LmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVz
dDEpOgorICAgICAgICAoYXJndW1lbnRTdHJpY3RDYXNlLnRlc3QyKToKKyAgICAgICAgKGFyZ3Vt
ZW50U3RyaWN0Q2FzZS50ZXN0Myk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDQu
c2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDUuZ2V0
IHNob3VsZEJlKToKKyAgICAgICAgKHN0cmluZ09iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6
CisgICAgICAgIChzdHJpbmdPYmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChjdXN0
b21TZXR0ZXIudGVzdDEpOgorICAgICAgICAoY3VzdG9tU2V0dGVyLnRlc3QyKToKKyAgICAgICAg
KGN1c3RvbVNldHRlci50ZXN0Myk6CisgICAgICAgIChjdXN0b21TZXR0ZXIpOgorICAgICAgICAo
cmVnRXhwTGFzdEluZGV4KToKKyAgICAgICAgKGZ1bmN0aW9uQ2FzZS5mdW5jKToKKwogMjAxNi0w
My0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggQ2hhbmdlbG9nLiBnaXQgbWVyZ2VkIHBvb3JseS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMTY5Zjg2Yzc4YmI2MmZlNDFjOGVlMGY4OWI3ZjEyYTc3YWM5YzVjLi4wNTA2N2NlMGI3YjZm
ZjIwMGFiZjEwZWQzZDY0MGNmNTlkMWM1Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBA
CisyMDE2LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2VpdmVyIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1c3Rv
bVNldHRlciByZXR1cm5zIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIHJlc3VsdCBv
ZiBbW1NldF1dLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhpcyBjaGFuZ2UsIHRoaXMgcGF0Y2gg
bW9kaWZpZXMgdGhlIENvZGVHZW5lcmF0b3JKUyBhbmQgdGVzdCByZXN1bHRzLgorCisgICAgICAg
IEN1cnJlbnRseSwgRE9NIGVsZW1lbnRzJyBbW1NldF1dIHJldHVybiB0cnVlIHdoZW4gdGhlIHNl
dHRlciBpcyBmb3VuZC4KKyAgICAgICAgVGhpcyBpcyBnb29kIGZvciB0aGUgZmlyc3Qgc3RlcC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dGhyb3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9i
amVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0RGVs
ZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJm
YWNlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZU5hbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVy
RXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Qnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9u
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3Ry
aW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9v
bGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
VVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
T25mb28pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVy
cnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVk
ZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVudGltZS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6
CisgICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6c2V0
VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0
VmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OnB1dCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlND
OjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9i
amVjdDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAxNi0w
My0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzaG91bGQgcGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBieSByZWZlcmVuY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAzZjU2YmQ2OGU2MWViYmNjN2E3YjgxMGVjYTU1ZWY3ZmE0YTI1OTEzLi4x
MzU0MmNlZWUwMDM2YWMzNDkxMmIyMWVjNjU3NTNkMGY0OWVjNGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhv
dXQgcmVjZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gTlBKU09iamVjdCwgd2UganVzdCBwcm9wYWdhdGUg
dGhlIHJldHVybmVkIHZhbHVlIG9mIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c2V0UHJv
cGVydHkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6
UHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJ
bnN0YW5jZTo6c2V0RmllbGRWYWx1ZSk6CisKIDIwMTYtMDMtMTAgIEplcmVteSBKb25lcyAgPGpl
cmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5IG9uIEFWQXNzZXQgdG8gbWF0Y2ggY2FjaGluZyBwb2xpY3kuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZmQwYWNjNDljNWJjMmE2OWFiMzJhZDI2NzcwM2JjZDg4MmIzODFlMy4uYWVhOGZjYjlhNGY5
ZjliMzQ3OGFmYWQ0MzcxN2RjNjc4ODU4MDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE2LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2VpdmVyIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5QSlNP
YmplY3Q6OnNldFByb3BlcnR5IG1heSBjYWxsIGBtZXRob2RUYWJsZSgpLT5wdXRgIG9wZXJhdGlv
biwgYnV0IHdlIGludGVudGlvbmFsbHkgZG8gbm90IHByb3BhZ2F0ZSBpdCB0byB0aGUgY2FsbGVy
J3MgOjpwdXQuCisgICAgICAgIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3ZSBqdXN0
IHVzZSB0aGUgcmVzdWx0IG9mIDo6c2V0UHJvcGVydHkgY2FsbC4KKyAgICAgICAgVGhpcyBpcyBg
dHJ1ZWAgd2hlbiA6OnNldFByb3BlcnR5IGF0dGVtcHRzIHRvIGNhbGwgYG1ldGhvZFRhYmxlKCkt
PnB1dGAuCisgICAgICAgIEluIDo6c2V0UHJvcGVydHksIGFmdGVyIGNhbGxpbmcgYG1ldGhvZFRh
YmxlKCktPnB1dGAsIDo6c2V0UHJvcGVydHkgZnVuY3Rpb24gY2xlYXJzIHRoZSBleGNlcHRpb24g
c3RhdGUuCisgICAgICAgIFNvIHRoaXMgaXMgbm90IHRoZSBzYW1lIHNlbWFudGljcyB0byB0aGUg
c2ltcGxlIGRhdGEgcHJvcGVydHkgc3RvcmUuIFJhdGhlciwgdGhpcyBpcyBsaWtlIHRoZSBhY2Nl
c3Nvci4KKyAgICAgICAgSW4gRUNNQTI2MiBbW1NldF1dLCBpdCByZXR1cm5zIHRydWUgaWYgdGhl
cmUgaXMgYSBzZXR0ZXIuIFNvIHdlIGp1c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiA6OnNl
dFByb3BlcnR5LgorICAgICAgICBUaGlzIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGEgc2V0dGVy
IGZvciB0aGUgZ2l2ZW4gW1tTZXRdXSBvcGVyYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBP
YmplY3Q6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaDoKKwogMjAxNi0wMy0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTc5ODYpOiBEb24ndCB0cnkgdG8gbGluayB0byB1
bmRlZmluZWQgJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBhZGRkMjE5ODYzMzllM2Mx
ZDBiMWU0MGNlMmJhZTdmN2NkYjdmNzZkLi5lOTU2M2Y1NGNlYThiMjYzYjE0MzM1NjcyMWQ0Y2Rk
ZDc5YzVlNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaApAQCAtMTgxLDggKzE4MSw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMg
UGFyZW50IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCA5NTIwMzlkY2NiODYyMjIwYzUzNjM0ZGM2ZjRjYzZhNDdl
NjVkNmY3Li5hNTUzNzIzNGJiMzJjYTY4NmRkMDZiMmFmZTlhMDdhOWQwMjU3ZjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtMjIyLDcgKzIyMiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNDYWxsYmFja09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlND
b250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMjQ0LDEzICsyNDQsMTMgQEAKICAgICAg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJs
ZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQo
bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5
LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CkBAIC0yNjEs
NyArMjYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNzIsOSArMjcyLDgg
QEAKICAgICAgICAgICAgICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAv
LyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9w
ZXJ0eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0
LDcgKzI4Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHgg
PSB0b1JlZihleGVjKTsKQEAgLTMwNiwxMyArMzA1LDEzIEBACiAgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0
aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAg
ICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBlbnRyeS0+
c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTMyMyw3ICszMjIsNyBA
QAogICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0zMzEsNyArMzMwLDcgQEAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlv
bnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMp
KSB7CiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNG
dW5jdGlvbnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXgg
YzNlZmJkNTZkZDcwZGVhY2EzNjMzOTI0YTkyMjlkMzYxMzkzMjAxNS4uMzY1MDI0ZTg4ZjI2YWUx
NDZhOWU4YmE0Y2MyZjRjYmQ1YTM1NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtOTgsMTUgKzk4LDE1IEBAIGJvb2wgRGVi
dWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBEZWJ1Z2dlclNj
b3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGVi
dWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwp
OwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsK
ICAgICBzbG90LnNldFRoaXNWYWx1ZShKU1ZhbHVlKHRoaXNPYmplY3QpKTsKLSAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBE
ZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZlZjYwYzg5OWY3ZjE0ODNlMzJjYzdhODM4
MzNlMGFmOTQwNDcyZGIuLmUzNGY0OTdkN2ZiMzMzYWFlZTc2MDkyNDM4NjRmMzVjMGE3OGE1MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3Bl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApA
QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNjI5NDFkNDlm
MTczOTQ5ODdhODY0M2U0OWM3NzU4MmE2ZTZmYThkZS4uYTVjZjViMGQxOGExMjk2ZWNjMDZiOGQ3
MTYyNDIzNmVhYjJhODFkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBA
QCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRl
eCwgc2xvdCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
JikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAwNDUwYjUzYThm
NzBkZmE2YjQ1MWY2ZDY3Yzc5NjQ3ZDA0YmI0MWIzLi41OWE1Nzg4ZjAzY2Y5ZDdiYTM2ODc3Yzk0
NGRhNTA3N2IyN2MzM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaApAQCAtNTAsMTAgKzUwLDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRl
ZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIGdldENvbnN0
cnVjdERhdGE7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CisgICAgdHlwZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1
dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQ
dXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0
aW9uUHRyIHB1dEJ5SW5kZXg7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggODI0
MWQ2ZTBjMDc1NjQ0NzFjNWE5ZGE1MmUxNmQxYmE3M2JlZjk5NS4uNDgxZjE2YjNlOWVlYWZiYzUz
ZTdkNTE4NGVjNDU0NDcxYWQyYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBDbG9u
ZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm8KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KIAotdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKQEAgLTE3OCwxMSArMTc4LDEwIEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNW
CiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSB7
CiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShleGVj
KTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gU2hhZG93IHRoZSBn
aXZlbiBQdXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNoaW5nLgotICAgICAgICBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFs
dWUsIGR1bW15KTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBp
ZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmgKaW5kZXggOGU3MTNkNWM2ZmE1Y2ExODQxMzRiMDUyYjJkNTg5OWEyNjc3YTMwZS4uNWQyMjIx
ODNjOWU3MDgzMjk0YjE0MTc2ZGE0ZWY1NjE5N2NiYjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xh
c3MgQ2xvbmVkQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1Y2UzYTM2OTJk
MmIwNmM0MzYzNTNmMjJhMmYzN2RmYjhhZjdjZjNjLi44NzM2ZDE5MjUzMDE0NjkyYjc0MWMyZDg2
ODJjMDQwYThjYzU5OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKQEAgLTM3LDE0ICszNywyNSBAQAogCiBjb25zdCBD
bGFzc0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXJTZXR0
ZXIiLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlclNldHRlcikgfTsKIAot
dm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjdXN0b21HZXR0
ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29sIGlzQWNjZXNz
b3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVChzZXR0
ZXIpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0dGVyKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh0aGlz
VmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICAvLyBBbHdheXMgcmV0dXJuIHRy
dWUgaWYgdGhlcmUgaXMgYSBzZXR0ZXIgYW5kIGl0IGlzIG9ic2VydmVkIGFzIGFuIGFjY2Vzc29y
IHRvIHVzZXJzLgorICAgIGlmIChpc0FjY2Vzc29yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGN1c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVj
dCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNl
dHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPnNldHRlcigpOworICAgIC8vIFJldHVybiBmYWxz
ZSBzaW5jZSB0aGVyZSBpcyBubyBzZXR0ZXIuCiAgICAgaWYgKCFzZXR0ZXIpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNBY2Nlc3NvcikKICAgICAg
ICAgdGhpc1ZhbHVlID0gYmFzZTsKLSAgICBzZXR0ZXIoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOworICAgIHJldHVybiBjYWxsQ3VzdG9t
U2V0dGVyKGV4ZWMsIHNldHRlciwgaXNBY2Nlc3NvciwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAppbmRleCBkZGRkOGM2ZmI0M2U3OWEzYmUyOTJlZDJlODQz
NzYzN2ViNmFkMzg4Li4yNGJmZjg4NGUwYmU4MGQ4MGUyYWE5ZGZiZTViMTI2ZjNmYzliN2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaApAQCAtNzAsNyArNzAsOCBAQCBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9OwogCi1KU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjdXN0
b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RCYXNlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0
b21TZXR0ZXIoRXhlY1N0YXRlKiwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIsIGJv
b2wgaXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3VzdG9tR2V0
dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0
aGlzVmFsdWUsIEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IDY3ZjFiMDM0
NWQ3MWI4ZDMzNjJmNjZiYjY1ZTJkY2YzYTM1ZDJhYTQuLmVkY2M2ZjFiOThkNmRhZGY4ODk3ZThh
ZjJmZjAyMjQ0NTI5YjNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgR2VuZXJpY0FyZ3Vt
ZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oCmluZGV4IDliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2UyNDZkZWUuLmQy
ZWIzNzExNTIxMjY0NWMzMTZmNzlkNDJlMjNiNzgwZmRkYmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApA
QCAtOTcsNyArOTcsNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotdm9pZCBHZW5l
cmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDgsMjggKzEwOCwyNyBAQAogICAgICAgICAg
ICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpKSB7CiAgICAg
ICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAgICAgUHV0UHJvcGVydHlT
bG90IGR1bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hlYWJsZSwgc28gd2Ugc2hh
ZG93IHRoZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgotICAgICAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1
bW15KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4
UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1
aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgotdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4o
Y2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5j
YW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnNldElu
ZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyY2Q2NmU1Y2Q0MmZkMDFkYjUy
ZGUwZDc2YmNmNGQyMTkxZWY3Y2I5Li44NzMwNzk0YTM0MjhmNmQ1ZWE4ZTlhMmI4Y2JhMjE0YzE3
YmM4NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQogICAgIHJldHVybiBjYWxs
KGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOwogfQog
Ci12b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
Z2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKK2Jvb2wgY2Fs
bFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0
ZXIsIEpTVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7
CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBp
ZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIg
PSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHZvaWQgY2Fs
bFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0
ZXIsIEpTVmFsdWUgdmFsCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0
ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBiYXNlLCBhcmdzKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IGNk
MjA0MDI4ZWY5Y2FlMjlmODIxNGZjNmJmYWYzYWViNTU2ZjNmOTEuLjJiMjJiM2UwYjBjMDBjOTI3
YmY1Y2JkOTAwNDljZmU5MThlNTE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5saW5lIEdldHRlclNldHRl
ciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKIH0KIAogSlNWYWx1ZSBjYWxsR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIpOwotSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGJvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVy
U2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGFmZGJlMGRlNzZlZDc5
YTJjNzM0M2RhN2Y3MWIwNmE3ZWJlZDFhNGYuLjFjMjkwYzgyN2MzM2ViN2E1ZDlkMGE5MTc4MzI1
MDMxZWNhODg1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgLy8gYS4g
SWYgdGhlIFtbVmFsdWVdXSBmaWVsZCBvZiBEZXNjIGlzIGFic2VudCwgdGhlbgogICAgICAgICAv
LyBhLmkuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRlZmF1bHQgW1tEZWZpbmVP
d25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBBIHBhc3NpbmcgImxlbmd0
aCIsIERlc2MsIGFuZCBUaHJvdyBhcyBhcmd1bWVudHMuCiAgICAgICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMs
IHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBm
b3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpOwogICAgICAgICAvLyBmcm9tIEVTNS4xIDguMTIuOSAxMC5hLgog
ICAgICAgICBpZiAoIWFycmF5LT5pc0xlbmd0aFdyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0
YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOwpAQCAtMTkwLDcg
KzE5MCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEK
LXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwog
CkBAIC0xOTgsMTMgKzE5OCwxMiBAQCB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQogICAgICAgICB1
bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZh
bHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewog
ICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRM
ZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICB9CiAKLSAg
ICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpA
QCAtNjQ0LDcgKzY0Myw4IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZTogewogICAgICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBsZW5ndGgoKTsKLSAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSwgcHV0UmVzdWx0KSkgewogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSAmJiBvbGRMZW5ndGggPCAweEZGRkZGRkZGdSkKICAgICAgICAgICAgICAgICBzZXRM
ZW5ndGgoZXhlYywgb2xkTGVuZ3RoICsgMSwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggOWYyNzM4MmRlYmQ3MTc1
YjUwOWMxZGZhNDk1MWI5ZWJkMmNiODJlNi4uY2NmM2JlZTNkY2E0YjMzYWRhMTM2YzQyZGU3MDFj
ZDZjYmE1YTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAt
MTU2LDcgKzE1Niw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCAzNTlh
ZTQ3YTUwYmU3ZWMyODAyODcwYzk2Nzc0ODQ2NDMwZTM0NGIxLi42ZGRlNGM3ZGZmY2EzMjMzMDBj
Nzg1Nzg3YTUyNzYwYWFjNTA2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzksMTggKzc5LDE2IEBAIGJvb2wgSlNBcnJheUJ1
ZmZlcjo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBK
U0FycmF5QnVmZmVyOjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAgICBKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZl
ciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4oY2VsbCk7CiAgICAgCi0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkgewot
ICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8g
d3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmJ5dGVMZW5ndGgpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmlj
dE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVy
IHByb3BlcnR5LiIpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlCdWZm
ZXI6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oCmluZGV4IGQ2MzRkNzM2M2ZlNGE1MDhiOGFiOTgwY2ZiMDY1ZjMxMWE3
YWE2ZTguLmY3Njc1MzgzNzg0NGYwYTZmYjVhYzdjNDljYTI5YTM0NTM0Mzc5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCmluZGV4IDNiZmNhZjE1MjE5OTI1YjkzZWQ3ODdmNDE1MDFjOWI3N2JiNTVi
MTEuLmQ0YjVjYzBjNDM2YjU4MWJlYjE2OTQ4Y2E3MzJmMDA2MWY2MjFjODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTE2NCwxNyArMTY0LDE1IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCi12b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojpw
dXQoCitib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAg
ICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7Ci0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKSB7Ci0gICAgICAgIHJlamVj
dChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFk
LW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKQorICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKICAgICAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6ZGVmaW5lT3duUHJvcGVy
dHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaAppbmRleCA1MjNhMjAwZmJhMmQ3NzJjMmI3M2YyZDRjNWZjNjVjNzEyZjZiOWJmLi5iMmNm
NWEyYjE5OTllNWQ3ZWEyZThhNDg3NWViZTQ3MzhlMDg4YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAyYmYxZDhmNmMwMTE0ODcx
NTI1NmQyNmFiMDllNWUzNzU2MWM1OTUxLi43NTQ4N2Q2ZjM5NjlhNTZjNjE0NWRiMDkwNTJlNzZi
MmE2ZTY3MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcApAQCAtMTI4LDE5ICsxMjgsMTcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogCiAvLyBFQ01BIDguNy4yCi12b2lk
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5
SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwog
CiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7CiAgICAgICAg
IGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CkBAIC0x
NDgsNyArMTQ2LDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChw
cm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpAQCAtMTYwLDE5ICsxNTgsMTUgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNWYWx1
ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoZ3MuaXNHZXR0
ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMsIGdz
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNldHRl
cihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9k
ZSA6IE5vdFN0cmljdE1vZGUpOwogCi0gICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0
dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxD
dXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBz
bG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4g
ZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAg
ICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBA
IC0xODEsMzQgKzE3NSwzNSBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogCiAgICAgICAgIHBy
b3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAg
IHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9B
UlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxk
VGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewogICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHByb3RvdHlw
ZS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCAq
dGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICByZXR1cm47
CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHJvdG90eXBlLT5hdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBj
YmJmMjYxZmFmMzA0OTliZWNmMzgxMTQ3ZmM3OGU0OTg1MDRlZjg2Li5hZGE4MDI5N2I4NDcxZjZi
YjNkOTBlODQyNjI5NGQ5NmQ3NGRmZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yODYsMTEgKzI4NiwxMSBAQCBjbGFzcyBKU1ZhbHVlIHsKIAog
ICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JikgY29uc3Q7CiAKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHZvaWQgcHV0SW5saW5lKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBib29sIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSB0b1RoaXMo
RXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA4YTUxMGI0MTA1OGRjNTdlMzY4
OTU3MjRjNjk1Y2VkZWQzNDZjNzBhLi5lZTNhMTZlNDI0NDBlNjlhMWIzNjhiN2UyNDE2M2E4Zjhi
YjU4MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKQEAgLTgwNyw0MCArODA3LDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBK
U1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgcmV0dXJuIGdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0YXRpY19jYXN0
PGRvdWJsZT4ocHJvcGVydHlOYW1lKSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAg
ICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICByZXR1cm4gYXNDZWxsKCkt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1ZTo6cHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6
OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFko
IWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CiAgICAg
YXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0OwotICAg
IGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0gSlNPYmpl
Y3Q6OnB1dCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IG90aGVy
U2xvdCA9IHNsb3Q7Ci0gICAgcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIG90aGVyU2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKICAgICBzbG90ID0gb3RoZXJTbG90Owor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRv
UHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVy
biBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA4ODA3
YTdkMDg0YWY0NzM3NGZkZDBkY2M4ZDBkMjc4NTk0Mjc0NDJkLi4yZGQyZmZhNTMwNDMyNDQyYmQ0
YWM1MzQ1MmMxZjZkYzM2NTU3MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTEwOCwyNSArMTA4LDIzIEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAg
cmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygp
IHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1p
dGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwg
dmFsdWUsIHNsb3QpOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVj
dChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIH0K
IAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAgSlNWYWx1ZShj
ZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZp
ZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVu
dGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwg
ZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXgg
MTMyMTc0NWFhMjJhYmRhZjIxZDM2YTVjNTY5YzUwNjU2ZTZlYzYwYy4uNjc3YzY1MTYyYzk0NTNj
YjFmNjk4OTZiYWU0YzdkZDRiZWY3MTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBjbGFzcyBKU0NlbGwgewogICAgIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhv
ZFRhYmxlKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikg
Y29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKaW5kZXggNDZiZjFjYmJlOTYyNDE0YmJhZjc4NGNkZWZiMzM5YjNlNGEy
OGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3ZTQ4ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTExMSwxOCArMTEx
LDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBC
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3OjpwdXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgK
ICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aAotICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQp
IHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNT
dHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJh
eSBwcm9wZXJ0eS4iKTsKIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRl
ZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRlMTA1OWU5ZjcyNTVhMThjNTgwNmZkYTQ5ZmMuLjc3NGI2
ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRmN2QxZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSlNEYXRh
VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDlhNWE1NDc2NzEwZjQ5MjY3ZjYzNWQ2
NWZiYWQ4NmMxOWVkODU5NjYuLjUyY2E0MGQwY2E2ZTY1MThmZTY5NTNjZDEzNGQwMmUxMDlhM2Fl
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBA
IC00MjQsMTMgKzQyNCwxMiBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkgewotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUp
IHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNo
IHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRo
ZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KQEAgLTQ0MCwyMyArNDM5LDIxIEBA
IHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVE
YXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsK
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRd
XSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2Fj
aGUodGhpc09iamVjdCk7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9u
dENhY2hlKTsKICAgICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7
CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVk
LCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0
aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKG9rYXksIG9rYXkpOwotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bGVyKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNP
YmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTUy
Niw3ICs1MjMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIH0KICAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNz
IG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKKyAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNt
RXJyb3IpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0
b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggNmUzMzg1NjQ3YmY0MGY2
MWNiMzJmNzk4NjAxMGVjNTU0MWVlYTFiYy4uZWJlNDhjYTRiZDIxNDljYTQ3NzJkZjQzZDc3NDY1
MmVkZTg4YjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aApAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUg
ewogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVy
YXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggODU4OTM5
MmFmY2RhMWY1YjAxOTdkYzQ5NTlhMjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhkMGFmODIzMjBi
NTk4YTIyOTdmMWRjYjM4OTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIgKzI3NCwxMiBA
QCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmll
dyB7CiAgICAgZnJpZW5kIHN0cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGI2YzZhZWQ4
ODE0YTlhYjJkY2NkMjBlNjExZTY3YzRmOWQ5Y2JhOTEuLmE4MGFjNjAxOWNiOTBhNmNiNmZhYWY4
OGYzMTc4NDMzYjRkOGViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMDMs
MTggKzMwMywxNiBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtMzY0LDE5ICszNjIsMTcgQEAKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnB1dEJ5SW5kZXgoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpwdXRCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FS
UkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWUodGhpc09i
amVjdCksIHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
cHV0KAotICAgICAgICAgICAgdGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9
CiAgICAgCi0gICAgdGhpc09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuY3BwCmluZGV4IDZkMTc2MDg2ZWFkMzkzM2RjMDFjYjc3MmY3ZDNhMTU5NDJmYmQwZjYuLmVm
ZmViZmI0NTE1MTEzMWZhMDU4NTQ1NDU4NWIzNDgwZTY1Nzk3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5jcHAKQEAgLTM4LDEzICszOCwxNSBAQCBib29sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi12b2lkIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKICAgICBib29sIGFs
d2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSA9IHRydWU7CiAgICAgYm9vbCBp
Z25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciA9IHNsb3QuaXNJbml0aWFsaXphdGlvbigpOwotICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSwg
aWdub3JlQ29uc3RBc3NpZ25tZW50RXJyb3IpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7
CisgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3Bl
cnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciwgcHV0UmVzdWx0KTsKKyAgICByZXR1cm4g
cHV0UmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCmlu
ZGV4IDY0M2YwOTVkZDE5Nzk5ZTVhYTMyNjBiMzk4MmE5YTkzZTU2YmY1MzAuLjhkNGZkMmUwNDYx
NTAwZTgyZGNjZDY4MGIxYWMxNmNmMWQ2ZjA3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXN5bWJvbFRhYmxl
KCktPnNpemUoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDVhZTkzOTEyMWViZDI3MzFhZjQ3MzYxYWU0MTk1MGI0
NmQ0NjlmYzAuLmI2ZDEwY2UzMTIzNWFhYzE0M2EyYWU0OWJiYzNiZWMwZjc5MDA3ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTYyOCwxNiArNjI4LDE3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0xlZ2FjeVByb2ZpbGVy
KCkgY29uc3QKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNM
ZWdhY3lQcm9maWxpbmcodGhpcyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpc09iamVjdCkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Ig
PSBzbG90LmlzU3RyaWN0TW9kZSgpOwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSBm
YWxzZTsKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgYm9vbCBwdXRS
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IHB1dFJlc3VsdDsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDQ0ODJlNjcxOGNkMDJkNDQ3ZDI0YmJiMzQ1OTA0Y2MxYTQyMTNhMmEu
LmUxY2Q1ZGE2MzFiNjFlZDgxMzEwOTUzYjFiNGJjM2E1OGI4YWM1ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDA0LDcgKzQwNCw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5j
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCBjMGMwOWVhMWEyY2I2MDM1
YTY5NTliZDJiZWIwNTliM2FmYzgzNDM2Li5kYzkyM2FjNjgwMWQyNzljZWFjMzFjOWMzMGZiZmQw
MGRkNThhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC04MCwyMSArODAsMjIgQEAgYm9vbCBKU0xleGlj
YWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogCiAg
ICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBzbG90LmlzU3RyaWN0TW9kZSgpIHx8
IHRoaXNPYmplY3QtPmlzTGV4aWNhbFNjb3BlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50
U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMpKQotICAgICAgICByZXR1cm47CisgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRl
V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQor
ICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogCiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdo
IHRvIEpTT2JqZWN0IGJlY2F1c2UgX19wcm90b19fIGFuZCBnZXR0ZXIvc2V0dGVyIAogICAgIC8v
IHByb3BlcnRpZXMgYXJlIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3RoZXIgaW1wbGVt
ZW50YXRpb25zIGRvIG5vdAogICAgIC8vIGV4cG9zZSBpbiB0aGUgbGV4aWNhbEVudmlyb25tZW50
IG9iamVjdC4KICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSk7Ci0gICAgdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRPd25E
YXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
YzQwYWU4NzM5NWNjMzEyMmQ2ODAzMWVjMmYzZmNkNTQ4N2UwZDhjNS4uNTE1ZTExNzljNjE0NDAy
N2YzZDYxZjg2MjZiZjM0MGI4YjNiZGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIGNs
YXNzIEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGYwOGZl
M2QwMmI5OWM4MzNiNTUxNzNlYjU0MDg0YzFlMjA0MzUwZmIuLjA0YjA4ZjRkMTg5NTkyYjMyMThk
NzJlNzM0YWM3MWU5ZWNkZjE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDgsMTQgKzEwOCwxNCBAQCB2
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogY2VsbCwgRXhlY1N0YXRlKgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5LCBtb2RlKTsK
IH0KIAotdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVu
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAg
Ly8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNNb2R1bGVSZWNv
cmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5y
ZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaAppbmRleCBmN2VmYTYyNjNiMmIyNzQ5Zjc4OGMwYTdmMDczZjc2NzdhMDA5YjAzLi40MzRi
YjdjM2Y4YTIxYWViOGQ5ZWY1OWMyMmFmZTFiMDQ2NWYzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC03Nyw3ICs3
Nyw3IEBAIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJv
bm1lbnQgewogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAppbmRleCAwZmU5YzMyNjZmYWNhODc0ODJlMDJhMWZhYzZiYWE5YzMzMDlk
Yjg3Li40MGRkYTczMzNmZjcyMGFkZjYwOThmZjQ3NzU3MmYxZWIxODZhZWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCkBAIC0xNTEsMTcgKzE1MSwxOSBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVj
ZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggMzdlNjQyZTg3NGE0NmQxM2Y0NjVlMWE3
ZDdjN2RlNDFjZjdiMjdkMS4uOGNmZWNmZDBhNDViNTA0ZTZlYWU3NDc5YjUzZDExOGY0NzI2Njc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oCkBAIC00Niw4ICs0Niw4IEBAIGNsYXNzIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB9CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCAxY2M0OTM3NWQ0ZjJjZjJlYzdlMmUwMWJiYTdi
YjhhOTE0N2Y4NGZmLi43YjdiMzIzZTk4YTkxYTE5ODJhYWMwNTYzNmMxYWE5ZDk3ODFkMjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CkBAIC03ODYsNyArNzg2LDggQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgICAg
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVs
ZS0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRF
bnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAg
ICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRv
dWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgaW1wb3J0RW50cnkubG9j
YWxOYW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBm
YWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVk
TW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwogICAg
ICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKQEAgLTgxNiw4ICs4MTcsMTAgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBl
eGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDog
bV9kZWNsYXJlZFZhcmlhYmxlcykgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOwogICAgICAgICBWYXJPZmZzZXQg
b2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7Ci0gICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2so
KSkKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5n
ZXQoKSksIGpzVW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxz
ZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgIGlmICghb2Zmc2V0
LmlzU3RhY2soKSkgeworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50
LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpz
VW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdu
b3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KQEAgLTgzNyw3ICs4NDAsOCBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgc3ltYm9s
VGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOwor
ICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgLyogc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRS
ZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKaW5kZXggMmU4ZjcxZWY5M2JmMDlkZGIzODVmMjZkYTM3ZGRjZWYwOWE1
YWUzYy4uYmYwZjc2NzdlZTVlMWNjZjQ4MmI2YzE2NjVlZTkyNTY2ZGY1MzM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNjUsNiArNjUsNyBAQAog
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTRmluYWxPYmplY3QpOwog
CiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IgPSAiQXR0
ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iOworY29uc3QgY2hhciogVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yID0gIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiI7CiAKIGNvbnN0IENsYXNzSW5mbyBKU09iamVjdDo6c19pbmZvID0geyAiT2JqZWN0Iiwg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU09iamVjdCkgfTsKIApAQCAtNDE3LDEyICs0MTgs
MTIgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
dGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogfQogCiAvLyBFQ01BIDguNi4yLjIKLXZvaWQg
SlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgIHJldHVybiBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTQzNSwyMyArNDM2LDIzIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBK
U1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5p
c0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbFNldHRlcihleGVjLCB0aGlz
LCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGV4ZWMsIHRo
aXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnko
KSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZz
ZXQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0
dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRy
aWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywg
YXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yKQogICAg
ICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwganNDYXN0PEN1c3Rv
bUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShvYmosIGpzQ2Fz
dDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCkBA
IC00NjEsMTAgKzQ2Miw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFvYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAg
aWYgKG9iai0+Y2xhc3NJbmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVz
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5
KGV4ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwg
b2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHBy
b3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKQEAgLTQ3
Miw4ICs0NzEsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9yLgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAx
MgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4o
b2JqKTsKLSAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVs
bCgpKQpAQCAtNDgyLDE4ICs0ODAsMjEgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVy
Y2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpcyk7Ci0g
ICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOworICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1l
ID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGws
IHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFs
dWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIHN3aXRjaCAo
dGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTUwMywxNSArNTA0LDEzIEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
IHsKICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZt
KCksIHZhbHVlKTsKICAgICAgICAgLy8gUmVsb29wLgotICAgICAgICBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9J
TkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgewogICAgICAg
ICAgICAgdGhpc09iamVjdC0+Y29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUp
OwotICAgICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgfQpAQCAtNTIzLDIyICs1MjIs
MjAgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3Vv
dXMoKVtwcm9wZXJ0eU5hbWVdLnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7CiAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAg
ICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFtZSArIDEpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdW1iZXIoKSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydERvdWJsZVRvQ29u
dGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8vIFJlbG9vcC4KLSAgICAgICAgICAg
IHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAg
ICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAg
aWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkgewogICAgICAgICAgICAgdGhpc09i
amVjdC0+Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAg
IC8vIFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
c09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkKQEAgLTU0Niw3ICs1NDMsNyBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsCiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW3Byb3BlcnR5TmFt
ZV0gPSB2YWx1ZUFzRG91YmxlOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgpA
QCAtNTY4LDcgKzU2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICsr
c3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xv
dC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOb25BcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlOgpAQCAtNTgzLDI2ICs1ODAsMjggQEAgdm9pZCBKU09iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLAogICAgICAgICAKICAgICAgICAgLy8gVXBkYXRlIGxlbmd0aCAmIG1fbnVtVmFs
dWVzSW5WZWN0b3IgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGxl
bmd0aCkgewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVz
dWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgbGVu
Z3RoID0gcHJvcGVydHlOYW1lICsgMTsKICAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChs
ZW5ndGgpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAg
ICAgICB9IGVsc2UgaWYgKCF2YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT52bSgpLCB0aGlzT2Jq
ZWN0LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhp
c3RzKFZNJiB2bSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMTI5Miw3ICsxMjkxLDcgQEAg
Ym9vbCBKU09iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+YWxsb3dzQWNjZXNz
RnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldHRl
ciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0dGVyLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwog
ICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldHRlcik7CkBAIC0xMzAzLDEwICsxMzAyLDEwIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVt
KSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5l
T3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7
CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldHRlciwgdW5z
aWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRl
c2NyaXB0b3Iuc2V0U2V0dGVyKHNldHRlcik7CkBAIC0xMzE3LDI3ICsxMzE2LDI1IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgc2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAg
ICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5lT3duUHJv
cGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAg
cmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkg
JiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXREaXJlY3RJ
bmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICBwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwor
ICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RD
dXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0
b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgcHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBzbG90KTsKIAogICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0
eVNsb3Q6Ok5ld1Byb3BlcnR5KTsKIApAQCAtMTM0NSwxOCArMTM0MiwyMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdQogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgIHN0
cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICBzdHJ1Y3R1cmUt
PnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVjayhwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSh2bSk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgc3Ry
dWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogCiAgICAgc3RydWN0dXJl
LT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogLy8gSGFzUHJvcGVydHkoTywgUCkgZnJvbSBTZWN0aW9uIDcuMy4xMCBvZiB0aGUg
c3BlYy4KQEAgLTE4ODgsNyArMTg4Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0Ojpm
aWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBnCiAgICAg
c2xvdC5zZXRDYWNoZWFibGVHZXR0ZXJTbG90KHRoaXMsIGF0dHJpYnV0ZXMsIGpzQ2FzdDxHZXR0
ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVu
dHJ5SW5NYXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xk
RGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gbWFwID0g
bV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7
CkBAIC0xODk5LDcgKzE4OTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogICAgICAgICBl
bHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAgICAgICAgICAg
ICBlbnRyeUluTWFwLT5zZXQodm0sIG1hcCwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGVudHJ5
SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVu
dChvbGREZXNjcmlwdG9yKSAmIH5BY2Nlc3NvcjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpKSB7CkBAIC0xOTIyLDExICsxOTIxLDEyIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4
ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1h
CiAKICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGFjY2Vzc29yKTsKICAgICAgICAg
ZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdD
dXJyZW50KG9sZERlc2NyaXB0b3IpICYgflJlYWRPbmx5OwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEFTU0VSVChkZXNjcmlwdG9yLmlzR2VuZXJp
Y0Rlc2NyaXB0b3IoKSk7CiAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAvLyBEZWZpbmVkIGluIEVTNS4xIDguMTIuOQpAQCAtMjAxMSw3ICsyMDExLDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFAKICAgICAgICAgaWYgKGN1cnJlbnQuaXNEYXRhRGVz
Y3JpcHRvcigpICE9IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAgICAg
ICAvLyA5LmEuIFJlamVjdCwgaWYgdGhlIFtbQ29uZmlndXJhYmxlXV0gZmllbGQgb2YgY3VycmVu
dCBpcyBmYWxzZS4KICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2Vw
dGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKTsK
ICAgICAgICAgICAgIC8vIDkuYi4gSWYgSXNEYXRhRGVzY3JpcHRvcihjdXJyZW50KSBpcyB0cnVl
LCB0aGVuIGNvbnZlcnQgdGhlIHByb3BlcnR5IG5hbWVkIFAgb2Ygb2JqZWN0IE8gZnJvbSBhCiAg
ICAgICAgICAgICAvLyBkYXRhIHByb3BlcnR5IHRvIGFuIGFjY2Vzc29yIHByb3BlcnR5LiBQcmVz
ZXJ2ZSB0aGUgZXhpc3RpbmcgdmFsdWVzIG9mIHRoZSBjb252ZXJ0ZWQgcHJvcGVydHkncwogICAg
ICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXSBhbmQgW1tFbnVtZXJhYmxlXV0gYXR0cmlidXRl
cyBhbmQgc2V0IHRoZSByZXN0IG9mIHRoZSBwcm9wZXJ0eSdzIGF0dHJpYnV0ZXMgdG8KQEAgLTIw
NjUsNyArMjA2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgp
CiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0
UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhp
c1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29s
JiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsK
ICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHBy
b3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBAIC0yMDc3LDE0ICsyMDc3LDE0
IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlmIChzdG9yYWdlICYmIHN0b3Jh
Z2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVy
YXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBp
ZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91bmQoKSAmJiAoaXRlci0+dmFs
dWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkpIHsKLSAgICAgICAgICAgICAg
ICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5n
ZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgICAgICBwdXRSZXN1bHQgPSBp
dGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQo
KSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50LT50eXBlKCkgPT0g
UHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nh
c3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHByb3h5LT5wdXRCeUluZGV4
Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAg
ICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwg
aSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMjA5NiwxNyArMjA5NiwxNyBAQCBib29sIEpTT2JqZWN0OjphdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUlu
ZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTVmFsdWUgcHJvdG90eXBl
VmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gYXNPYmplY3Qo
cHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIGFz
T2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3Vs
dCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChpbmRleGluZ1R5
cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NFUlQo
IWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMTIwLDE2ICsyMTIwLDE1IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhF
eGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICBp
ZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihp
LCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAgICAgICB8fCAo
aSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGks
IGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAgIHx8IGlu
ZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsK
ICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNwYXJzZUFycmF5
VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAgICAgICBtYXAt
PnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOwogICAgICAg
ICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAgICBhcnJheVN0
b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEpOwpAQCAtMjE0
MCwzMSArMjEzOSwzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNhc2UgSW50MzJT
aGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAgIGJ1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBE
b3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgICAg
IGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgQVNTRVJU
KHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250aWd1b3VzU2hh
cGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwgdGhpcywgdmFs
dWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0FycmF5LmNwcC4K
LXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7
Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0
aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVl
KTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCitib29s
IEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
CkBAIC0yMTkxLDEyICsyMTkxLDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAg
ICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8sIG9yIGNhbid0
IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBhIHNwYXJzZSBt
YXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFw
KGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1hcC0+cHV0
RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKICAgICAv
LyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjIwNiw3ICsyMjA1LDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgp
IHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRo
cm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAgICAg
ICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjIxNSwxMCArMjIxNCw4IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1h
cCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4KICAgICAvLyBX
ZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMgc2V0
LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxzLgog
ICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNl
RW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVj
dG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5wdXRFbnRyeShl
eGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihs
ZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52
bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFnZSBhZnRlciBp
bmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgc3Rv
cmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjIzNiw5ICsyMjMzLDEwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjI0OCwyNSArMjI0Niwy
MiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVj
LCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9y
YWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0gICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2llbnRseUJleW9u
ZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgp
IHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmco
KSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0aGUgU2xv
d1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVBcnJheVN0b3Jh
Z2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKLSAgICAgICAg
ICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpcywgZXhlYywg
aSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY3Jl
YXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjI3NCwzOCArMjI2OSwzMyBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2UgQUxM
X0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAg
ICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8gb3duIHByb3Bl
cnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGluIHRoZSBzcGFy
c2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJheVN0b3JhZ2Uo
KS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5z
KGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5zKGkpKSAmJiBh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
OgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhy
b3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9kZSwgQXJyYXlT
dG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQ3OSwxNSArMjQ2OSwxNSBAQCBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmlu
c2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
ciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3Nv
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIG5h
bWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFjY2Vzc29yLT5z
ZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4g
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMp
OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQ5NSw3ICsyNDg1
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7CiAKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7Ci0gICAg
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICBy
ZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
IH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKQEAgLTI4MDYsMTIgKzI3OTYsMTEgQEAgc3RhdGljIGJvb2wgcHV0RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBw
cm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TWF5
QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQot
ICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAg
ZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CkBAIC0yODkyLDcgKzI4ODEs
NyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURl
c2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2Vz
cyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CisgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNo
YW5pc21FcnJvcikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBA
IC0yOTQ0LDcgKzI5MzMsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgICAgICB9CiAg
ICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAg
ICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCA0M2I5OTA2MmU4NWQ3NTk3MTA0NDZlN2I4ODliMmViNTdmZjczNjU5
Li4yNDhhNDg3MmU4Y2RlZDU4NTBmOWRkZDc3ZTFmOWIzNDc0ZGNiN2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTcxLDYgKzcxLDcgQEAgaW5saW5lIEpT
Q2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogCiBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBleHRl
cm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3I7CitleHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3I7CiAKIENPTVBJTEVfQVNTRVJUKE5v
bmUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlLCBOb25lX2lzX2JlbG93X0ZpcnN0SW50ZXJuYWxB
dHRyaWJ1dGUpOwogQ09NUElMRV9BU1NFUlQoUmVhZE9ubHkgPCBGaXJzdEludGVybmFsQXR0cmli
dXRlLCBSZWFkT25seV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlKTsKQEAgLTE3MSwx
OCArMTcyLDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJbmxp
bmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAg
ICByZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAg
Ly8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0yMDQsNyAr
MjA1LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICAv
LyBBIG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGlyZWN0SW5kZXgu
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAg
ICAgICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAgIHsKQEAgLTQ5
NywxNSArNDk4LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8g
IC0gYWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0ZXMgd2lsbCBi
ZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdpdGgg
dGhlIGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5hbWUgaXMgYXNz
dW1lZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1dERp
cmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
Ym9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwot
ICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRHZXR0ZXIoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAg
ICB2b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRTZXR0ZXIo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02MzEsOCArNjMy
LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHB1dERpcmVj
dChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0
RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElk
ZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9u
TGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRl
cihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVy
dHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rp
b24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtNzAzLDcg
KzcwNCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXMgZXF1
aXZhbGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0dGVt
cHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0dXJucyAwIGlm
IGludDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVzZQogICAgIC8v
IGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLCBvciBi
ZWNhdXNlCkBAIC04NDksOCArODUwLDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsK
IAogICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAgIHZvaWQgcHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOworICAgIGJv
b2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOwog
CiAgICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5ld0xlbmd0aCk7
CiAgICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg1OSw3ICs4NjAsNyBA
QCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAgICB2b2lkIG5v
dGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAotICAgIGJvb2wg
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAvLyBD
YWxsIHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQgYW5kIHlvdSdy
ZSBzdXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAgLTkwNCw3ICs5
MDUsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0RGly
ZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0
YXRlKiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBO
RVZFUl9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJf
SU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwpAQCAtOTEzLDkgKzkxNCw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFibGVWYWx1ZSog
ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIAotICAg
IHZvaWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSos
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsKKyAg
ICBib29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50cnkq
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7CiAg
ICAgICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGly
ZWN0SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhN
b2RlKTsKICAgICAgICAgCkBAIC0xNDY4LDE5ICsxNDY5LDE5IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShh
dHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVy
U2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVl
LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAg
IHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZjNkMmI4MjhjM2Yw
OTM4NTIzMjRkNWY2OTFlMGM4NThhMjQ2M2UxMy4uMjEwNDQxNzE0ZWE2Nzk5MWYzNzc2NzczMDIy
NWIxNWFmOWU2NDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHIK
IH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1dElu
bGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMg
aXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1l
cyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sg
aW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJ
bmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUo
ZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0o
KSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpCi0gICAg
ICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBz
bG90KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhpc09iamVjdC0+
cHV0SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CmluZGV4IDQwZDMxZmQ2ZTJlYzFkZWRkZmExODI0MDY3NWFhZThmM2U4M2RlMzcuLjE5M2RmZTU3
ZGNmZDVmMDNjMWQ3MDA1YTUwYjIwOWZjN2ZjYjY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBKU1Byb3h5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTUHJveHk6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUlu
ZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcyYWJjZWJhODdm
ZmIwNmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2NmFmYjgwYjli
YmFlZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtNzYs
OCArNzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09i
amVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVhYzIzNmY3NmFi
YWI4MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRmNTdjOGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1vZGUg
ewogdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlwZW5h
bWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAg
ICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywK
LSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCwgYm9v
bCYgcHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVudHJ5LmlzUmVh
ZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHB1
dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApA
QCAtMTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgLy8g
dGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRv
bid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWct
PnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgog
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9s
VGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQog
ewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1
dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlF
cnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJs
ZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9u
bHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJpYWJs
ZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2lu
dFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wgc2hv
dWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBi
b29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxl
UHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRh
YmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQp
CiAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3Qs
IHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0
aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0
SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9i
amVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hX
YXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0
cjsKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJvb2wg
aWdub3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFi
bGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFi
bGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAg
ICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCmluZGV4IDBiZjlkMmU5YjUwZmYyMjM0NjQ2NjQ2MWQ4NTliZTgzODI1OThhYWYuLjY3
MzIzOTQ1YzU5MDE2YjczMTc2ODU2ZjAzY2M1NzQwMmNhYTBhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjcgKzI4NCw0MCBAQCBpbmxpbmUgYm9vbCBn
ZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxl
LCBUaGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVy
dHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2Fz
IGNhbGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJl
aW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQp
LgogLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2lu
YWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNl
bGYpLgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7
CiAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKICAgICAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJv
cGVydHkuCiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
LSAgICB9IGVsc2UgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBB
Y2Nlc3NvcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7Ci0gICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yOwogICAgICAgICBKU1ZhbHVlIHVwZGF0ZVRoaXNW
YWx1ZSA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvciA/IHNsb3QudGhpc1Zh
bHVlKCkgOiBKU1ZhbHVlKGJhc2UpOwotICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShl
eGVjLCBKU1ZhbHVlOjplbmNvZGUodXBkYXRlVGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKSk7Ci0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ip
CisgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBlbnRyeS0+cHJv
cGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3NvciwgdXBkYXRlVGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAg
ICAgIGlmIChpc0FjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3Nvcihi
YXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAg
IH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMzEyLDE0ICszMjUsMTQgQEAgaW5saW5lIHZvaWQg
cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpT
T2JqZWN0KiBiYXMKICAqIEl0IGxvb2tzIHVwIGEgaGFzaCBlbnRyeSBmb3IgdGhlIHByb3BlcnR5
IHRvIGJlIHNldC4gIElmIGFuIGVudHJ5CiAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBh
bmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgKi8KLWlubGluZSBib29s
IGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBw
dXRSZXN1bHQpCiB7CiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gdGFibGUuZW50
cnkocHJvcGVydHlOYW1lKTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNlLCBiYXNlLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBwdXRFbnRyeShleGVjLCBlbnRyeSwgYmFz
ZSwgYmFzZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRl
eCBhM2VkZTU5NzYzNjIxMmIyY2U0MjQ0ZDBiZmQwM2FlMzE4YjhlNDlkLi4yZDU3MjYwOTlmMTJl
NmRkODk4NTZhNTgxNDllYmUxMjM5MzY4NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCBib29sIFByb3h5
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGVyZm9ybURlZmF1bHRQdXRG
dW5jdGlvbj4KLXZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKK2Jvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURl
ZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkKQEAgLTM3Niw3
ICszNzYsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIEpTVmFsdWUgaGFuZGxlclZh
bHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0
Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM4NCwxMiArMzg0LDEwIEBAIHZvaWQgUHJveHlPYmplY3Q6
OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRo
aXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBwZXJmb3Jt
RGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM5OCw2MiArMzk2LDYxIEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHRyYXBSZXN1
bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFy
Z2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAg
ICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBwdXRWYWx1
ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdy
aXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9y
IGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnLiIpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJs
ZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Uu
IikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb3h5T2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUHJveHlPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKQorICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3Qq
PihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAg
SlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QtPnRhcmdldCgp
KTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RU
YWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
ICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlz
VmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3Bl
cnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXRC
eUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKTsgCiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmpl
Y3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9
IHNob3VsZFRocm93OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlz
U3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhl
IHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0
LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRh
cmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1
dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRo
aXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHBl
cmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3Jt
RGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhD
b21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAzMTc1
MmI4YWE4N2NlMTBmMjNmOTJhNmExYjQ5MzNlZGY3YmE4ODBkLi42ZDExYWJmZGYxYWU2NTE0OTJl
NDlmOTlkOWE1NjdhN2EwZDc4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmgKQEAgLTY1LDkgKzY1LDkgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNPYmplY3QqIHRhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1ZSBoYW5kbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4
Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSopOwogICAgIHZvaWQg
cmV2b2tlKFZNJik7CiAgICAgYm9vbCBpc1Jldm9rZWQoKSBjb25zdDsKQEAgLTEwMCw3ICsxMDAs
NyBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uPgogICAgIGJvb2wgcGVyZm9y
bURlbGV0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbik7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci0gICAg
dm9pZCBwZXJmb3JtUHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24pOworICAgIGJv
b2wgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKICAgICBib29s
IHBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKICAgICBib29sIHBlcmZvcm1J
c0V4dGVuc2libGUoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBwZXJmb3JtRGVmaW5lT3duUHJvcGVy
dHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0
UHJvcGVydHlTbG90LmgKaW5kZXggOTBjNTdiZTkwZjhhMWE0ZGJkNmU0MzM1MGI1YmM2N2ZlMzY0
MWFjYy4uMTNhZDJkMzdhZThhMTBkZWE5ZmM3OWFmNGY5MzFjNGQyZWQyNTdjMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUg
eyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJvcGVy
dHksIEN1c3RvbVZhbHVlLCBDdXN0b21BY2Nlc3NvciB9OwogICAgIGVudW0gQ29udGV4dCB7IFVu
a25vd25Db250ZXh0LCBQdXRCeUlkLCBQdXRCeUlkRXZhbCB9OwotICAgIHR5cGVkZWYgdm9pZCAo
KlB1dFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdmFsdWUpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1dFZhbHVlRnVuYykoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
OwogCiAgICAgUHV0UHJvcGVydHlTbG90KEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzU3RyaWN0
TW9kZSA9IGZhbHNlLCBDb250ZXh0IGNvbnRleHQgPSBVbmtub3duQ29udGV4dCwgYm9vbCBpc0lu
aXRpYWxpemF0aW9uID0gZmFsc2UpCiAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDg5
NGFhZmE0Njk2OGU2MDMyYWZkOWRkOGJiZDc1YjI5ODE3OTA3OWQuLmM2ZDU3YjMxNzA5NDllZGE0
YjM5NGM5NmVmNzVlOGJlOTc4NDdlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC00Myw2ICs0Myw3IEBACiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93
bktleXMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlw
ZU9mKEV4ZWNTdGF0ZSopOwogCiB9CkBAIC02OSw2ICs3MCw3IEBACiAgICAgaXNFeHRlbnNpYmxl
ICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICByZWZsZWN0T2JqZWN0
T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwcmV2ZW50
RXh0ZW5zaW9ucyAgICAgICAgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgc2V0ICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RP
YmplY3RTZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIHNl
dFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCkBAIC0yMzQsNiArMjM2LDI4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25z
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVm
bGVjdC5zZXQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgSlNPYmplY3Qq
IHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworCisgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1lbnQo
Myk7CisKKyAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBl
biBpbiBzdHJpY3QgbW9kZS4KKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBpc1N0cmljdE1vZGUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1l
bnQoMiksIHNsb3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCA5N2JkZTFiNzQxYzZkYzUyMWI2NTg4NWVlNzJhZjZjOWJjM2U2YWNhLi4yNGYwOGQyYjhjMjFl
MGE2YzQ3ODk5OGY4YWZiMjY1ZDc2NGZhMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC00Nyw4ICs0Nyw4IEBACiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKIAotc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotc3RhdGljIHZvaWQgc2V0UmVn
RXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNldFJl
Z0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC0yMzQsMTYgKzIzNCwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNS
ZWdFeHBDb25zdHJ1Y3RvcihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdldFJpZ2h0Q29u
dGV4dChleGVjKSk7CiB9CiAKLXZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
Citib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRv
IGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpIHsK
ICAgICAgICAgY29uc3RydWN0b3ItPnNldElucHV0KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1
ZSkudG9TdHJpbmcoZXhlYykpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKK2Jvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGlm
IChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpz
RHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSkpIHsKICAgICAgICAgY29uc3RydWN0b3ItPnNldE11bHRpbGluZShKU1ZhbHVlOjpkZWNvZGUo
dmFsdWUpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVjdHVy
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
bmV3VGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKaW5kZXggNTRjYWE2Y2MzNjM1ZWRkNDc1YmU1ZTc4Y2FjYWMwNjQ2ZDFiZjJkMi4uZDM5
ZjFmZmY4MTZlMzFjZTE4YjFmMDZmNDcyMDZlY2MzYTAwZTVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
Ym9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJs
ZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKICAgICAgICAgICAgIHJldHVy
biByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFu
Z2VBY2Nlc3NNZWNoYW5pc21FcnJvcik7CiAgICAgICAgIGlmICghcmVnRXhwLT5tX2xhc3RJbmRl
eElzV3JpdGFibGUpIHsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2Vu
dCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOwpAQCAtMTM4LDI2ICsxMzgsMjYg
QEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KTsKIH0KIAotc3RhdGljIHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKK3N0YXRpYyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0
SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGFz
UmVnRXhwT2JqZWN0KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4
ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIHRydWUpOwogfQogCi1zdGF0aWMgdm9pZCByZWdF
eHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGJvb2wgcmVnRXhw
T2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhc1JlZ0V4cE9iamVj
dChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLCBmYWxzZSk7CisgICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSksIGZhbHNlKTsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgewotICAgICAgICBhc1JlZ0V4
cE9iamVjdChjZWxsKS0+c2V0TGFzdEluZGV4KGV4ZWMsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBhc1JlZ0V4cE9iamVjdChjZWxsKS0+c2V0TGFz
dEluZGV4KGV4ZWMsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgc2xvdC5z
ZXRDdXN0b21WYWx1ZShhc1JlZ0V4cE9iamVjdChjZWxsKSwgc2xvdC5pc1N0cmljdE1vZGUoKQog
ICAgICAgICAgICAgPyByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QKICAgICAgICAgICAg
IDogcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBCYXNlOjpwdXQoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dChjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogSlNWYWx1ZSBSZWdFeHBPYmpl
Y3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cmluZyogc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAppbmRleCA2ZTcxNWQ1ZTdmOTdlMGE4MDBhNTYwNmRlNjEzNzIwMGE3OTZlY2RmLi5h
ODA0ZmQzODRlYWM5MzE2MWYyNDJhNjMyMmM0ZWZlYWIyY2Y2NTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFz
cyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBl
eGVjSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuY3BwCmluZGV4IDlhNWRhODM5NTdjMzI0ZThkYWY0MDI1ZGY0MTQ5NTJkODRjMDU3MzkuLmM4
ZTAwM2JmODU5ODI2MWI5MzYwZDdjYjZiNjFiOGI3YjcyZWE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIFN0cnVjdHVyZSogU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK2Jvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAKQEAgLTEwMiwxMCArMTAyLDEwIEBA
IHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYXJyYXksIHVuc2lnbmVkIGksCiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3Ip
OwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgZW50cnkucHV0KGV4
ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBlbnRyeS5w
dXQoZXhlYywgYXJyYXksIHRoaXMsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFy
cmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRE
aXJlY3RJbmRleE1vZGUgbW9kZSkKQEAgLTE0NiwyMCArMTQ2LDIwIEBAIHZvaWQgU3BhcnNlQXJy
YXlFbnRyeTo6Z2V0KFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoQmFzZTo6Z2V0KCksIGF0dHJpYnV0ZXMpOwogfQogCi12
b2lkIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCitib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSkgewog
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkVGhyb3cpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHNldChleGVjLT52bSgp
LCBtYXAsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVl
LCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICByZXR1cm4g
Y2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhy
b3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CiB9CiAKIEpTVmFsdWUgU3BhcnNlQXJy
YXlFbnRyeTo6Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKaW5kZXggMDc1NGI1M2Q5ZDYw
MWRmMmFjZDdiY2FmMmU5NGFlZjZkMzM3ZGZhMi4uZjcxZGM5OTRlODk0YTcyODNhNTcyYjMzMjZj
OWU4NzYxYjkyMmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuaApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgU3BhcnNlQXJy
YXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogCiAgICAgdm9pZCBnZXQo
SlNPYmplY3QqLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKICAgICB2b2lkIGdldChQcm9wZXJ0eURl
c2NyaXB0b3ImKSBjb25zdDsKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgIGJvb2wgcHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZh
bHVlTWFwKiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBnZXROb25T
cGFyc2VNb2RlKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIGNsYXNzIFNwYXJzZUFycmF5VmFsdWVNYXAgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIG1heSBtdXRhdGUgdGhlIGNvbnRlbnRz
IG9mIHRoZSBtYXAKLSAgICB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RW50cnkoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgYm9vbCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlKTsKICAgICBBZGRS
ZXN1bHQgYWRkKEpTT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIGl0ZXJhdG9yIGZpbmQodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggMmFiNDg2NzcyMjI2NjJiNWM5OWE2ZDZi
ZmEzZDgyZTU2MmE1ZmVkZS4uNjZmYjZmZjM4ZTM2ZjQxMThkYmI4MDI5NDNiMmEwZTYzZmYyYWY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRl
ICJSZWplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDI1ICs2MSwyNSBAQCBib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LXZvaWQgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdP
YmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5H
ZXRJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2Zk
ZjFkYTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggMmZhNDZiZWY4YjUyNTIyZGIw
ZDE2ZDc4NDcwYmFlYzM5ZjY1ZTZlZi4uODBiNTU0NzhhN2E0YTczM2JlZGFlMjBhNWIxZDVjYWUx
ZGY3ZTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3OSw3ICsx
MDc5LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcu
dGFyZ2V0X21ldGFfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvUmVmbGVjdF9SZWZsZWN0LnNldC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wubWF0Y2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wucmVwbGFjZV0uanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL25hbWVzcGFjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L25hbWVzcGFjZS5qcwppbmRleCA2Nzg5MjgyNjliY2IzNWY3NjJmY2MxZDJkMTRkNjNmMDQxODVk
Y2VkLi45NWMyMjgzMmM4YmVhODQ0MjliNzgyY2M4YWNhY2EyYmVkZTRkYjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLmpzCkBAIC0yNyw2
ICsyNywxMiBAQAogc2hvdWxkQmUobmFtZXNwYWNlLl9fcHJvdG9fXywgdW5kZWZpbmVkKTsKIHNo
b3VsZEJlKFJlZmxlY3QuaXNFeHRlbnNpYmxlKG5hbWVzcGFjZSksIGZhbHNlKTsKIAorc2hvdWxk
QmUoUmVmbGVjdC5zZXQobmFtZXNwYWNlLCAnRXh0ZW5kZWQnLCA0MiksIGZhbHNlKTsKK3Nob3Vs
ZEJlKCdFeHRlbmRlZCcgaW4gbmFtZXNwYWNlLCBmYWxzZSk7CisKK3Nob3VsZEJlKFJlZmxlY3Qu
c2V0KG5hbWVzcGFjZSwgNDIsIDQyKSwgZmFsc2UpOworc2hvdWxkQmUoNDIgaW4gbmFtZXNwYWNl
LCBmYWxzZSk7CisKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBuYW1lc3BhY2UudmFsdWUgPSAy
MDsKIH0sIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jl
ZmxlY3Qtc2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWZsZWN0
LXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMDlmN2NmNzc0MDhjZWRiMTBhNTM5ZGM3OWZkZDc1NTRmNjg0
NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9yZWZsZWN0LXNldC5qcwpAQCAtMCwwICsxLDkzMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJub3Qg
dGhyb3duLiIpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCitzaG91
bGRCZShSZWZsZWN0LnNldC5sZW5ndGgsIDMpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
UmVmbGVjdC5zZXQoImhlbGxvIiwgImhlbGxvIiwgNDIpOworfSwgYFR5cGVFcnJvcjogUmVmbGVj
dC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdGApOworCit2YXIg
c3ltYm9sID0gU3ltYm9sKCk7CisKKyhmdW5jdGlvbiByZWNlaXZlckNhc2UoKSB7CisgICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgcmVjZWl2ZXIgaXMgbm90IHN1cHBvcnRlZC4KKyAgICB2YXIgcmVj
ZWl2ZXIgPSB7fTsKKyAgICB2YXIgb2JqZWN0ID0geworICAgIH07CisKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChvYmplY3QsICdDb2NvYScsIDQyLCByZWNlaXZlciksIHRydWUpOworICAgIC8v
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ0NvY29hJyksIHVuZGVmaW5lZCk7CisgICAg
Ly8gc2hvdWxkQmUoUmVmbGVjdC5nZXQocmVjZWl2ZXIsICdDb2NvYScpLCA0Mik7CisKKyAgICB2
YXIgb2JqZWN0MiA9IHsKKyAgICAgICAgc2V0IENvY29hKHZhbHVlKSB7CisgICAgICAgICAgICBw
cmludCh2YWx1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSh0aGlzLCByZWNlaXZlcik7CisgICAg
ICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ0NvY29hJywgNDIsIHJlY2VpdmVyKSwgdHJ1ZSk7Cisg
ICAgLy8gc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnQ29jb2EnKSwgdW5kZWZpbmVkKTsK
KyAgICAvLyBzaG91bGRCZShSZWZsZWN0LmdldChyZWNlaXZlciwgJ0NvY29hJyksIDQyKTsKK30o
KSk7CisKKyhmdW5jdGlvbiBwcm94eUNhc2UoKSB7Cit9KCkpOworCisoZnVuY3Rpb24gb2JqZWN0
Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAgdmFyIG9iamVjdCA9IHt9OworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIDApLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IDApLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRl
ZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworCisg
ICAgdmFyIG9iamVjdCA9IHt9OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0
YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5
KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6
IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAg
ICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisKKyAg
ICB2YXIgb2JqZWN0ID0ge307CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdD
b2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7
ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAg
ICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAg
ICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCks
ICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAg
ICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5
bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9s
LCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAg
IHZhciBvYmplY3QgPSB7fTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9i
amVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0Nv
Y29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAn
Q29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwg
J0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5
bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3lt
Ym9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJv
bCksICdDb2NvYScpOworfSgpKTsKKworKGZ1bmN0aW9uIGFycmF5Q2FzZSgpIHsKKyAgICAndXNl
IHN0cmljdCc7CisgICAgdmFyIG9iamVjdCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVjdFsxMDAwMDAwXSA9
ICJIZWxsbyI7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA1MCksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDUwKTsKKworICAgIHZhciBv
YmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
J2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxv
JywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQor
ICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3Vs
ZEJlKG9iamVjdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdy
aXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworCisgICAgLy8gTGVuZ3RoLgorICAgIHZhciBvYmplY3QgPSBb
XTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgn
LCAnQ2FwcHVjY2lubycpOworICAgIH0sIGBSYW5nZUVycm9yOiBJbnZhbGlkIGFycmF5IGxlbmd0
aGApOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKwor
ICAgIHZhciBvYmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICds
ZW5ndGgnKSwgMCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywg
MjApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwg
MjApOworCisgICAgdmFyIG9iamVjdCA9IFtdOworICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywgMjApLCBmYWxzZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworCisgICAgdmFyIG9iamVj
dCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVs
bG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOyAgLy8gUmV0dXJu
IHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJu
ICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0p
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1
cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisKKyAgICB2YXIgb2JqZWN0
ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxs
bycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAg
ICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVs
bG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAg
ICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAn
Q29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2En
KTsKK30oKSk7CisKKyhmdW5jdGlvbiBhcnJheUJ1ZmZlckNhc2UoKSB7CisgICAgJ3VzZSBzdHJp
Y3QnOworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0
Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQp
OworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVj
dFsxMDAwMDAwXSA9ICJIZWxsbyI7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAw
LCA1MCksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDUwKTsK
KworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAn
Q29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29h
JywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUob2JqZWN0Lmxlbmd0aCwgdW5kZWZpbmVk
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7
CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsK
KworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgNjQpOworICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAnQ2FwcHVjY2lubycpLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2NCk7CisKKyAgICB2
YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdieXRlTGVuZ3RoJywgMjAwMCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcg
QXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0LCAnYnl0ZUxlbmd0aCcsIHsKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdieXRlTGVuZ3RoJywgMjApLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2
NCk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0
KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0
ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdD
b2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7
CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9
LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNl
dHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29h
Jyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwg
eworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAg
fSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBz
aW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2
NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycs
IHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAg
IH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVs
bG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8n
LCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycp
LCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
MCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAg
ICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAg
ICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsK
K30oKSk7CisKK1sKKyAgICBbIFVpbnQ4QXJyYXksIDEgXSwKKyAgICBbIFVpbnQ4Q2xhbXBlZEFy
cmF5LCAxXSwKKyAgICBbIFVpbnQxNkFycmF5LCAyIF0sCisgICAgWyBVaW50MzJBcnJheSwgNCBd
LAorICAgIFsgSW50OEFycmF5LCAxIF0sCisgICAgWyBJbnQxNkFycmF5LCAyIF0sCisgICAgWyBJ
bnQzMkFycmF5LCA0IF0sCisgICAgWyBGbG9hdDMyQXJyYXksIDQgXSwKKyAgICBbIEZsb2F0NjRB
cnJheSwgOCBdLAorXS5mb3JFYWNoKGZ1bmN0aW9uIHR5cGVkQXJyYXlDYXNlKFsgVHlwZWRBcnJh
eSwgYnl0ZXNQZXJFbGVtZW50IF0pIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAgdmFyIG9iamVj
dCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgMCk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgb2JqZWN0WzEwMDAwMDBdID0gIkhlbGxvIjsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDUwKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNTApOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBl
ZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
J2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxv
JywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQor
ICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgMCk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShvYmplY3Qu
bGVuZ3RoLCA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IHN5bWJvbCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3lt
Ym9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2ws
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50
ICogNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAn
Q2FwcHVjY2lubycpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
Ynl0ZUxlbmd0aCcpLCBieXRlc1BlckVsZW1lbnQgKiA2NCk7CisKKyAgICB2YXIgb2JqZWN0ID0g
bmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5
dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50ICogNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAyMDAwKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50ICogNjQpOwor
CisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgewor
ICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVj
dCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhp
c3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAg
ICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAg
ICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgMCksIDApOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgp
IHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQo
KSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmpl
Y3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIg
ZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29h
Jyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgp
IHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0
KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDApOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1
cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworfSk7CisKKworKGZ1bmN0aW9uIGFyZ3VtZW50
Q2FzZSgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFy
Z3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwg
dW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8n
LCA0MiksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCA0Mik7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIHVuZGVm
aW5lZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVl
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycs
IHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisg
ICAgICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKG9iamVj
dC5sZW5ndGgsIDApOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9i
amVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAg
IHdyaXRhYmxlOiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0MygpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworICAgICAgICBSZWZs
ZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAnQ2FwcHVjY2lubycpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgJ0NhcHB1Y2Npbm8nKTsKKworICAgICAg
ICBSZWZsZWN0LnNldChvYmplY3QsICdjYWxsZWUnLCAnQ2FwcHVjY2lubycpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdjYWxsZWUnKSwgJ0NhcHB1Y2Npbm8nKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3Vt
ZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdo
ZWxsbycsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0Nv
Y29hJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIg
ZXhpc3RzLgorICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAn
Q29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29h
JzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAw
KSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIp
LCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICAg
ICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgICAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3Q1KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgewor
ICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSks
IHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2En
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAg
ICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgdGVzdDEoKTsKKyAg
ICB0ZXN0MigpOworICAgIHRlc3QzKCk7CisgICAgdGVzdDQoKTsKKyAgICB0ZXN0NSgpOworfSgp
KTsKKworKGZ1bmN0aW9uIGFyZ3VtZW50U3RyaWN0Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7
CisgICAgZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7
CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5l
ZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0
cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgNDIp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCB1bmRlZmluZWQpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgICAgICBzaG91
bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAg
ICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAg
ICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdo
ZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAg
ICAgd3JpdGFibGU6IGZhbHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShvYmplY3QubGVuZ3Ro
LCAwKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5
bWJvbCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgICAgICB3cml0YWJs
ZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dDMoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKyAgICAgICAgUmVmbGVjdC5zZXQo
b2JqZWN0LCAnbGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksICdDYXBwdWNjaW5vJyk7CisKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICAgICAgUmVmbGVjdC5zZXQob2JqZWN0LCAnY2FsbGVlJywg
J0NhcHB1Y2Npbm8nKTsKKyAgICAgICAgfSwgYFR5cGVFcnJvcjogVHlwZSBlcnJvcmApOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBSZWZsZWN0LmdldChvYmplY3Qs
ICdjYWxsZWUnKTsKKyAgICAgICAgfSwgYFR5cGVFcnJvcjogVHlwZSBlcnJvcmApOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHRlc3Q0KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRz
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxv
JywgeworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2En
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAn
aGVsbG8nLCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlz
dHMuCisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2Nv
YScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwg
eworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAn
Q29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRy
dWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICBn
ZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgc2V0KCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOyAg
Ly8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdDUoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAg
ICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICB0ZXN0MSgpOworICAgIHRl
c3QyKCk7CisgICAgdGVzdDMoKTsKKyAgICB0ZXN0NCgpOworICAgIHRlc3Q1KCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gc3RyaW5nT2JqZWN0Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAg
dmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICBvYmplY3RbMTAwMDAwMF0gPSAi
Q29jb2EiOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNTApLCBmYWxzZSk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKworICAgIHZhciBv
YmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAg
ICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmlu
ZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAg
d3JpdGFibGU6IGZhbHNlCisgICAgfSksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwg
NDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsK
KyAgICBzaG91bGRCZShvYmplY3QubGVuZ3RoLCA1KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAor
ICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIC8vIExlbmd0aC4KKyAgICB2YXIg
b2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsICdsZW5ndGgnKSwgNSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAn
bGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcgU3RyaW5nKCJD
b2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAyMCksIGZhbHNlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgNSk7CisKKyAgICB2
YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBPYmplY3QuZnJlZXplKG9iamVj
dCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsIDIwKSwgZmFsc2UpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsKKworICAgIHZhciBv
YmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0K
KyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0
MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkg
eworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgp
IHsKKyAgICAgICAgfQorICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQy
KSwgZmFsc2UpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAg
ICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7Cisg
ICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5
bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisK
KyAgICB2YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsK
KyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIGZhbHNlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJl
KFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7Cit9KCkpOworCisoZnVuY3Rpb24gY3VzdG9tU2V0
dGVyKCkgeworICAgIC8vIEluIHRoaXMgY2FzZSwgUmVnRXhwLm11bHRpbGluZSBiZWhhdmVzIGxp
a2UgYSBzZXR0ZXIgYmVjYXVzZSBpdCBjb2VyY2UgYm9vbGVhbiB0eXBlLgorICAgIC8vIEFueXdh
eSwgaXQncyBPSywgYmVjYXVzZSBSZWdFeHAubXVsdGlsaW5lIGlzIG5vdCBzcGVjaWZpZWQgaW4g
dGhlIHNwZWMuCisKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgJ0NhcHB1Y2Npbm8nKSwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScpLCB0cnVlKTsKKyAg
ICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgMCksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgZmFs
c2UpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QyKCkgeworICAgICAgICAndXNlIHN0cmlj
dCc7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4cCwgJ211bHRpbGluZScsICdD
YXBwdWNjaW5vJyksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAs
ICdtdWx0aWxpbmUnKSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4
cCwgJ211bHRpbGluZScsIDApLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
UmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
MygpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KFJlZ0V4cCwgJ211bHRpbGluZScsIHsKKyAgICAgICAgICAgIHdyaXRhYmxl
OiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KFJlZ0V4cCwgJ211bHRpbGluZScpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KFJlZ0V4cCwgJ211bHRpbGluZScsICdDYXBwdWNjaW5vJyksIGZhbHNlKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNlKTsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgMCksIGZhbHNlKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNl
KTsKKyAgICB9CisKKyAgICB0ZXN0MSgpOworICAgIHRlc3QyKCk7CisgICAgdGVzdDMoKTsKK30o
KSk7CisKKyhmdW5jdGlvbiByZWdFeHBMYXN0SW5kZXgoKSB7CisgICAgdmFyIHJlZ2V4cCA9IG5l
dyBSZWdFeHAoJ0NvY29hJyk7CisgICAgcmVnZXhwLmxhc3RJbmRleCA9ICdIZWxsbyc7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQocmVnZXhwLCAnbGFzdEluZGV4JyksICdIZWxsbycpOworICAg
IHJlZ2V4cC5sYXN0SW5kZXggPSA0MjsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChyZWdleHAs
ICdsYXN0SW5kZXgnKSwgNDIpOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQocmVnZXhwLCAn
bGFzdEluZGV4JywgJ0hlbGxvJyksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJl
Z2V4cCwgJ2xhc3RJbmRleCcpLCAnSGVsbG8nKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVm
aW5lUHJvcGVydHkocmVnZXhwLCAnbGFzdEluZGV4JywgeworICAgICAgICB2YWx1ZTogNDIsCisg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChyZWdleHAsICdsYXN0SW5kZXgnKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KHJlZ2V4cCwgJ2xhc3RJbmRleCcsICdIZWxsbycpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQocmVnZXhwLCAnbGFzdEluZGV4JyksIDQyKTsKKworICAgIHNob3VsZFRocm93
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICByZWdleHAubGFz
dEluZGV4ID0gIk5HIjsKKyAgICB9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRv
IHJlYWRvbmx5IHByb3BlcnR5LmApOworfSgpKTsKKworKGZ1bmN0aW9uIGZ1bmN0aW9uQ2FzZSgp
IHsKKyAgICB2YXIgZnVuYyA9IGZ1bmN0aW9uICgpIHsgfTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KGZ1bmMsICdhcmd1bWVudHMnLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
ZnVuYywgJ2NhbGxlcicpLCBudWxsKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChmdW5jLCAn
Y2FsbGVyJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoZnVuYywgJ2Nh
bGxlcicpLCBudWxsKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA1NGFjYjdiNWVi
NjJkYTk1Yjg1YTU5ODc3ODZlMTJiMzYxZTVhOGQzLi40NjllNDExYjNiMDJmNTUwYzY0Zjc1YmE3
MjZiNTFlM2FlM2E0YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTMyMCw3ICszMjAsNyBA
QCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9v
bCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jiwg
Ym9vbCYgcHV0UmVzdWx0KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBj
c3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
IXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8u
cHJvcGVydHlJRCk7Ci0gICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJ
RCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSB3cmFwcGVkKCku
c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGJmZGNlZjQ4
MDgwNTgxMjNlZTA2YmNkODA5NmU0MmYyNTg5MGQ4ZjAuLjIwYjlmZjUwNzQ5MmM2Yjk0MmY2ZGRi
NDA5YzMzYWQ0MDMyM2Y4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtNzAxLDkgKzcwMSwxMCBAQCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiVmFs
dWUgaXMgbm90IGEgc2VxdWVuY2UiKTsKIH0KIAotdm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGF0dHJpYnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSkKIHsKICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIs
IGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCAwOTE2
ZGUxMzYwODVmMjQ1OWM1NThhODFkYWI0ZWY0NmU1YmY3MWY3Li5jODkwMmU2OWJlNzA3ZjZkODY5
MjkzYmUxZTc1YjE0ZWY4NjhlYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiB2
b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CiB2b2lkIHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRU
eXBlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZh
bHVlcyk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggMjI3MWZkOWFiOWE3Y2FkMGUzYTNiNThjOWI5
MGUzODdmMDgwOTcyOS4uNjJiN2UzZmNiY2ZiOThmYWIyN2U5OTQ4ZmZjMjU4ZGFjYWZmZTc2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJl
dHVybiBkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlu
ZGV4KSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNiArODUsNyBAQCBib29sIEpTRE9NU3Ry
aW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5zZXRJ
dGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAg
ICAgcmV0dXJuICFlYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggZjIwYTZmNzRmNTk0MTUxMGZmOGUzYjYyZDRhYjZmMzAwNjAy
YWViZi4uMjQ1N2I5MThlOGQxMjA3NDQwZGNmMjkyNDJlOTE1YzMxZTA3ODQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xMDMsNyAr
MTAzLDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKIHsKICAgICBB
U1NFUlQobV93cmFwcGVkLT5kb2N1bWVudCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxFeGVjKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2lu
dFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCB0b0pT
KGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBwdXRSZXN1bHQpOwogfQogCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGM2MDIwYTZkZjNhNGUxNDM0ZWMxOGEyYjRmMGZmN2NhNzZjYzRhMDYuLjIyZWExZGZk
YzMxMDVkNTQ1YjI1MTY3NDc2N2ZkOWQ2YjdjMzlkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTM0MiwzMiArMzQyLDM1IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgcmV0dXJuIGpzRE9NV2luZG93R2V0T3duUHJv
cGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKHRoaXNPYmplY3QsICpmcmFtZSwgZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBpbmRleCksIHNsb3QpOwogfQogCi12b2lkIEpTRE9NV2luZG93Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNET01XaW5k
b3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRo
aXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JN
ZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBh
dHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikKLSAgICAgICAgICAgIGxvb2t1cFB1dChleGVjLCBw
cm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFi
bGUsIHNsb3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wcmludEVy
cm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uKSB7CisgICAgICAg
ICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxvb2t1cFB1dChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BI
YXNoVGFibGUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
T2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0RPTVdpbmRvdzo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgp
LmZyYW1lKCkgfHwgIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBCYXNlOjpwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBi
b29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggOWRm
YmI0ZDUzZWZlYmM3ZDMzM2Q5MzRjMTg1NTE1MGUwNjYzOTEzZS4uMjI5ZTY4Mzk5OGUzOTJlNTE2
NzQ4ZTYyNTQ3ZmVmZjk4NGViODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkg
QEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxBcHBsZXRFbGVt
ZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0
KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9CiAK
IENhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwg
Q2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYTJlOTE4MzEwYjFlZGE0OWUx
N2I1ZDA4MGI4YzQ0OWUxMThmMDFkMi4uOTE5ZjY4NjYyYTExYjU4MmFkYWViMDgyYWZjNTBiZDcy
NWJhN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNIVE1MRW1i
ZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRo
aXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICByZXR1cm4gcGx1
Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90
KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBKU0hUTUxFbWJl
ZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA4M2Y5OGY3ZjdjYzNkMTBiNTEzMTA2ZDVjNjI5YzU2NDZkY2Y3
MTZmLi40YTg2NDdmODllYmM3MDA3MjllYzgzMGNhNmRhYzliOWU4ZTczMWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTE9iamVjdEVs
ZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wg
SlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0
b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAgcmV0dXJu
IHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywg
c2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDU3MGY5Y2ZiODVl
ODljOGI1YTk2NmU0OTliMTA4ZDQxNzUzY2NjYjIuLjhmZmRhMTI2ZTMwNzNhMzY1NjMwYTQ0YzE1
OTU1MTBmODFhOTc5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwCkBAIC02MCw4ICs2MCw5IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0g
ZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NSw3ICs3Niw3IEBAIGJvb2wgSlNMb2Nh
dGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNMb2NhdGlv
bjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwogICAg
IGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVEb21haW5BY2Nlc3MpCi0gICAgICAgICAg
ICBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgICAgICAgICAgcHV0UmVzdWx0ID0gSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MzcsOCArMTM4LDkgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBl
ZCgpLnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0gZmFsc2U7
CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuY3BwCmluZGV4IDdlYTczYjExMTNkMGFmN2MxY2U3MTdiYmJjODRhODgyNjc3
MDk1NjkuLjI4NjUzNzJlOWFlNzFmNGE1Y2E1MDRlZTA4NDk1NWFiNWViMTRkYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1M
RWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBwbHVnaW5FbGVt
ZW50Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBs
dWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghc2NyaXB0T2JqZWN0LT5oYXNQcm9wZXJ0
eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2NyaXB0
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBzY3JpcHRPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IDNkZjU1MDI3ZjAwOWQzMjk2
MmE3YTIyZjdkNjk2MzkyYzdhMGNlNWYuLjdhM2Y4MzJkOWRhYTVlNzk2MDdiZDFiMjcxYjM5NmNj
Mjg4YzcwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC00MSw3ICs0MSw3IEBACiAgICAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLAogICAg
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBib29sIHBsdWdp
bkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9v
bCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVy
dHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBKU0M6OkNhbGxUeXBlIHBsdWdpbkVsZW1l
bnRHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwgVHlwZSogZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IGIw
YWE5ODcyMjYzMzAwNjJhMmY2ZmM2ZTM5ZmRhNmExZTE1ZGU0ZjAuLjkwNzRlZWU3YzUwY2QxMDlh
ZmE0MDg4Y2U0NTA4ZjQ2ODU2ODQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TgogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgLy8gT25seSBwZXJmb3JtIHRoZSBj
dXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5
IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxs
aW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hlY2sK
QEAgLTExOSwxMyArMTE5LDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8g
aWYgdHJ1ZSwgdGVsbHMgdGhlIGNhbGxlciBub3QgdG8gZXhlY3V0ZSB0aGUgZ2VuZXJpYyBwdXQp
LiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSB3aGV0aGVyCiAgICAgICAgIC8vIHB1dERlbGVnYXRlKCkg
ZGlkIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIG9yIG5vdCAod2hpY2ggaXQg
ZGlkbid0IGluIHRoaXMKICAgICAgICAgLy8gY2FzZSBkdWUgdG8gdGhlIGV4Y2VwdGlvbikuCisg
ICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYTAwODAzNzU1MjdjZDQ4YjBkOTI4NmI3YTZmMDgyM2ZkYjRm
NjVmMy4uNDAxNjNiYzc3NmVlMDYyNGNlNmM5ZmFhMmU4M2U2ZWJiMDk2MmQ0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTEwNDAsOSArMTA0MCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0ZXJzCiAg
ICAgaWYgKCRvdmVycmlkZXNQdXQpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9OworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAgICB9CiAKICAgICBpZiAoISRo
YXNQYXJlbnQpIHsKQEAgLTEzNDAsNyArMTM0MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0
ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0xODg4LDcgKzE4ODgsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYg
KCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9
IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAg
ICAgfQpAQCAtMTg5OSw3ICsxODk5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgfQogCiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJzZXRKUyIg
LiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KQEAgLTIxNDMsMTIg
KzIxNDMsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblBy
b3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFt
ZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUq
PihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09i
amVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgfQogCkBAIC0yNTM4LDE4ICsyNTM5LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gInNldEpT
IiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y29uc3RydWN0b3JGdW5j
dGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7
CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3JcbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGRv
bU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KICAgICBteSAkaGFzQ3VzdG9tU2V0dGVyID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0KQEAgLTI1NTcsMjYg
KzI1NTgsMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICgkaGFzQ3Vz
dG9tU2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xh
c3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFt
ZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRT
ZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0
LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0gfHwgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7XG4iKTsKQEAgLTI1ODQsMTggKzI1ODYsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRoaXNPYmpl
Y3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleCwgdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91
bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xu
Iik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91
bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRU
aHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MTksNyArMjYyMiw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHth
dHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0
cmluZzsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7cHV0RnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CkBAIC0yNjMxLDcgKzI2
MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVuaWVudFRoaXMifSkgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbklu
c3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAgICAgICAg
ICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhlIHByb3RvdHlwZSBjaGFpbiBm
b3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwpAQCAtMjY0Myw4ICsyNjQ2LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRp
bnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqc3Rh
dGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFt
ZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VO
YW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBAIC0yNjU0
LDExICsyNjU2LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQo
KS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGNhc3RlZFRoaXMtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSwg
dmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudEhhbmRs
ZXIiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJp
YnV0ZUV2ZW50TmFtZSgkYXR0cmlidXRlKTsKQEAgLTI2NzMsNiArMjY3Niw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzZXRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwg
JGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8p
IHsKICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25z
dHJ1Y3RvciQvLzsKQEAgLTI2ODMsMTAgKzI2ODcsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25z
dHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0
ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC5cbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAg
ICAgbXkgJHB1dEZvcndhcmRzID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUHV0Rm9yd2FyZHMifTsKQEAgLTI2OTYsNyArMjcwMCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7YXR0cmlidXRlVHlwZX0+IGZvcndhcmRlZElt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVyRnVuY3Rpb25OYW1lfSgpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFmb3J3YXJkZWRJbXBsKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
JiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBdHRyaWJ1dGUgaXMgbm90IG51
bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcmVmZXJl
bmNlLgpAQCAtMjcyNiwxNCArMjczMCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGFy
Z1R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVy
aXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSkpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpz
dGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJGFyZ1R5cGVcIik7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4gIiBuYXRp
dmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFs
dWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRp
b25hbCJ9KSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKICAg
ICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNvZGVHZW5lcmF0b3ItPlZhbGlk
RW51bVZhbHVlcygkdHlwZSk7CkBAIC0yNzQyLDEzICsyNzQ2LDEzIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAi
bmF0aXZlVmFsdWUgIT0gXCIkZW51bVZhbHVlXCIiKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYgKCIgLiBqb2lu
KCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
IChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGUgZXEgImRvdWJsZSIgb3IgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJmbG9h
dCIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIFR5cGVFcnJv
cik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjc1Niw3ICsyNzYw
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYg
KCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNv
ZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjc4MCw2ICsyNzg0LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwg
QGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNs
dWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlKSBhbmQgbm90ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiQXJyYXlCdWZm
ZXIiKSB7CkBAIC0yODA0LDYgKzI4MDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRzZXR0ZXJSYWlz
ZXNFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ2NTQsOCArNDY2MCw4IEBAIHN1YiBH
ZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4i
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYs
IGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBkZWZpbmVPd25Q
cm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBk
NmM1YTQzNTRlMWZmMWFlZGY1YjBjODUyNmMyMmMzZTUxYjAyOTI5Li5lZjVmMDMzYWI1YjMwZmM4
M2ZjNzI2ZWY0ZmU1ZjZmODE1NzJlYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2
ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZl
RE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAK
IGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTc0LDE2ICsxNzQsMTYgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YjQwZjIwM2FkNGY3MTQ1YzZkNWI1NjgwMWIxYzkyZDYyMTI2NjA5Mi4uZGI1ZTc5YmY0OWRiMzk3
MWI3YmU2MmRmNjc1MDgyNjI5NDczMjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CkBAIC0xMjksMTYgKzEyOSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDM4ZjE0ODgyOWY2OGNkNjQ0YjY1ODM1ZGI4
MWU1YTlmYWY1YTdiMTcuLjIzMzk3NTMxZDBiYTQzM2M5NThjOTI0OTcyMGE5OGEzYWEwMWJlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMzMsNyArMzMsNyBAQAogLy8gQXR0cmlidXRl
cwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTMxLDE2ICsxMzEsMTYg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdG9yKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIGJv
b2wgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuY3BwCmluZGV4IDlmNjlkZWMzYmU4YzJkYjVmMGMxMjUwMTY5YjU1MjU5ZjNiY2MzNzku
LmI1NThlY2UyNGNlNmU2MGY4MDJlZmJiMDA3YmI2MGRkMGRhM2I1ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0cmlidXRl
cwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgpAQCAtMTY2LDE2ICsxNjYsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci12b2lkIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGQxOWI1ZmRkNzliNDRkYTNiNjczOWZmY2Zi
ZmEyM2IxMzQ4MWQ4YzEuLjVkYTNjMmY4ZTdjNzBhMGI2OGQ2NzMwMDM1YmM5OWMyOGI5NTJmZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90
eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0yMDIsMTYg
KzIwMiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVl
KTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAzY2Y3Yzk0
ZjZiOTRlMjAzNjAxODA3YzhmNzRmMjM2Yzg3NDg3MzY3Li4xZmMzYmU4MTU3NWJiMTE4NDVjN2I2
YmY0MTlkZDJhM2JiMjgzNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKQEAgLTE2NSwxNiArMTY1LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBz
ZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0
ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBlODJiNDQ5YTY3OTM0YmYxMzJhYjRlNDdiZjhm
OTcyYjQxYTkzYmNkLi5hMmRjMWEyMzlhMGQ5Y2UyYjFkYmU0NGYxMjEzMmFjM2I1YTQyNjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4
Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RF
eGNlcHRpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCBlOTIxZmYwOWMzZTk3Yjg0MjA2
NDVlYjZiOTY5MzM4ZWE5ZDE1OWNkLi43MmNhMTlmNjk0MDc1Yjc5OWE4MTdiYzIzN2YyYzdlZjE5
MWYzZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEyMywxNiAr
MTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBK
U1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
aW5kZXggMjFhZTNjNmMzMjUxNjE1NTdjNTUwN2U3MTVhZWQ5MDNmNDBmODBhMi4uZmE1MTY5YWNl
NjViNTQ5MGM2OWQ2ZWMyZjYwMmU4ZTk0YjlmYjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
QEAgLTgzLDQ3ICs4Myw0NyBAQAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUltcGxlbWVudHNTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
U3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVu
dHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFs
U3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50
YWxTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxl
bWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbFN0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgewogcHVibGljOgpAQCAtNTk0LDE2NCArNTk0LDE2OCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNl
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1
ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSlNUZXN0SW50
ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IEpTVGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
Y2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGJvb2wgcHV0UmVzdWx0ID0g
ZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0Owor
ICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogfQogCi12b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
LCBzaG91bGRUaHJvdyk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1
dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGJv
b2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0YXRlLCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVGVzdEludGVyZmFjZTo6c2V0SW1wbGVtZW50
c1N0YXRpY0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUu
dG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0SW1wbGVtZW50c1N0cjIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
U3RyMyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQog
ICAgIGNhc3RlZFRoaXMtPnNldEltcGxlbWVudHNTdHIzKCpzdGF0ZSwgdmFsdWUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJp
bXBsZW1lbnRzTm9kZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9k
ZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUobmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1
cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
U3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxl
bWVudGFsU3RyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJp
bmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0
U3VwcGxlbWVudGFsU3RyMihpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi12b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxTdHIzIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAg
IH0KICAgICBjYXN0ZWRUaGlzLT5zZXRTdXBwbGVtZW50YWxTdHIzKCpzdGF0ZSwgdmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBs
ZW1lbnRhbE5vZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IDVkYjRhNmU1MGMwOWU3MzFhOWJl
YTI2MzA3MWU2ZmUzNThkNzY2YmUuLmYwYjYwYjRhMzk1NGJjNzIwNGI1M2M0MDZjNzhkNWVhYzQ4
MjVmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJm
YWNlPiB7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdElu
dGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJl
c3VsdCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgREVD
TEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMjIzZjkyZTc3NjYwYzc4MmIzZTFiZWE1NWI2ZDM0NWViNDM3OTIzMy4uNDAxMmJlNTEyMWFm
Yjg0YTc1OGQxYjc0YmZhN2YyMzZhZGQ4MWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1
c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRl
UldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpT
Qzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjYsMjggKzE2NiwyOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1
c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1
c3RvbSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldFRlc3RBdHRyaWJ1dGVSV0N1c3Rv
bSgqc3RhdGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggNzY4YzgzNzZhZDU1MWU1ZTIw
ZWQwMzMxZTY1MGY2NzZiNmIwNThjMC4uMzJjMGE3NGViZDEwYjQ3ODYxNmY3OWNkZjRjMjlkOGUx
YTQyMjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0xMzEsMTYgKzEzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAotdm9pZCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWJlZGE1MzdlNTg1OWI3ZDg1NzczZGJjYmNhY2YxZmY5NGI3NmM3MS4uMjMxNTg3NTc1YjIzZGE2
MTJmZDg2NzFlOGFiMTMwMjJhZTE5NTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90
eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjQsMTYg
KzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVl
KTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggZTdhNWMzZTBkMmNlOWNiMWY0MzIw
MDQwNTNjNzc5ODU0YTJiNTZmOS4uNTUyZjcxN2FlOGUxOTcxOThmYTU2MzRmNDE3MWU5YTg2NGIx
YTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMzYsOSArMzYsOSBAQAogLy8gQXR0cmlidXRlcwogCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb2RlTmFt
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0Tm9kZVByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTQ0LDMyICsx
NDQsMzIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9kZU5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb2RlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJu
YW1lIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TmFtZShuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCmluZGV4IGE3Njk0ODVhMWQ0NDI1MWU3Y2RhNDI3ODc3YzQxYzAzMmIyY2RiY2QuLjhj
MjljNGI2ODdlYmQ3ODVjMWFkMzY3NjZkNzZlMGQ5YzMzNjVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTQ4LDE1ICs0OCwxNSBAQAogCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljV3JpdGVhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25k
ZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE5vbmRldGVybWluaXN0aWNQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTMz
MSw4NSArMzMxLDg1IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5v
bmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpT
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNX
cml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y1dyaXRlYWJsZUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25k
ZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4
Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGlj
IiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlv
bkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5v
bmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0
aW9uQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0
YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dE5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4
Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUg
PSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihu
YXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZTIwNWM1MjA2NzQ2MDJjYmUxMGI1ZWNm
ODhlZjA3ODIzOGNjNDY1MC4uNTM3M2IwZmE3YTY1OTY2ZDY5MTVkNzM3ZjE5MThkNGM1OTEyYjJj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKQEAgLTIwMiwxNTkgKzIwMiwxNTkgQEAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25z
dHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5
dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpC
eXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpV
bnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9u
Z0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpV
bnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlYWRPbmx5U3ltYm9sQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seVN5bWJvbEF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpU
eXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9i
alN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RU
eXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2lu
Z0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpPbmZv
byhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0
dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFu
ZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShD
b25kaXRpb24yKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
QW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTXV0
YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpJ
bW11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owotdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmF3
YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmljdEZsb2F0
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlcGxhY2Vh
YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91
YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5
cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJk
c0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051
bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAK
IGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgpAQCAtMjA0NywxMTAwICsyMDQ3LDEwOTcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNl
dEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBUZXN0T2JqOjpz
ZXRTdGF0aWNTdHJpbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHZh
bHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwg
dmFsdWUpOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobmF0aXZlVmFsdWUgIT0gIiIgJiYgbmF0aXZlVmFs
dWUgIT0gIkVudW1WYWx1ZTEiICYmIG5hdGl2ZVZhbHVlICE9ICJFbnVtVmFsdWUyIiAmJiBuYXRp
dmVWYWx1ZSAhPSAiRW51bVZhbHVlMyIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0RW51bUF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiYnl0ZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludDhfdCBuYXRp
dmVWYWx1ZSA9IHRvSW50OChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEJ5dGVBdHRyKG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRB
dHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9IHRvVUludDgoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRPY3RldEF0dHIo
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldFNob3J0QXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2ln
bmVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgdWludDE2X3QgbmF0aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dFVuc2lnbmVkU2hvcnRBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxv
bmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0TG9uZ0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TG9uZ0xvbmdB
dHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVz
dE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RP
YmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0
cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHIobmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0dHIiKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFRlc3RP
YmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3Ry
aW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
c3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRYTUxPYmpBdHRyKG5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0Q3JlYXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRv
U3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFs
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgdW5zaWduZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVh
bmF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRl
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIs
IG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5n
QXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZh
bHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgbmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21V
UkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxB
dHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dHlwZWRBcnJheUF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxG
bG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVl
LmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50
MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbldpdGhNZXNzYWdlKG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
bmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rl
c3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWSghdmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZv
KCkpKSkgewogICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY3VzdG9tQXR0ciIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRDdXN0b21BdHRyKCpz
dGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
T25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJv
bmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxX
aXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlLCBhY3RpdmVET01XaW5kb3coc3RhdGUpLCBmaXJzdERP
TVdpbmRvdyhzdGF0ZSksIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZSgqc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5z
ZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCBuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoKnNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRl
LCAqc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAg
IGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcygqc3RhdGUsICpzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCAqc2NyaXB0
Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAogI2lmIEVOQUJMRShDb25kaXRp
b24xKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q29u
ZGl0aW9uYWxBdHRyMShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQotdm9pZCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRy
MihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMyhuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCi12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKICAgICB9CiAgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxB
dHRyNCIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwg
dmFsdWUpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMikKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHI1Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25k
aXRpb25hbEF0dHI1IiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0
KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxB
dHRyNSIpLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8
IEVOQUJMRShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNv
bmRpdGlvbmFsQXR0cjYiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgImNvbmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5w
dXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25k
aXRpb25hbEF0dHI2IiksIHZhbHVlKTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgc2V0SlNUZXN0T2Jq
QW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUi
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBu
YXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZtKCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0QW55QXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJs
ZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1Bv
aW50Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldE11dGFibGVQb2ludChuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJpbW11dGFibGVQb2ludCIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0
b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldElt
bXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
alN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJh
d2JlcnJ5Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdiZXJyeSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRCbHVlYmVycnkobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9h
dCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGZsb2F0IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaWN0RmxvYXQobmF0aXZlVmFsdWUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiaWQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3Rh
dGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaW1wbC5zZXRJZChuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIG9iamVjdC4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7
CisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1Nl
dHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpbXBsLnNldE51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJp
bmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3Ry
aW5nVmFsdWUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUobmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9i
akF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAobmF0aXZlVmFsdWUgIT0gIiIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlv
bmFsVmFsdWUxIiAmJiBuYXRpdmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTIiICYmIG5hdGl2ZVZh
bHVlICE9ICJPcHRpb25hbFZhbHVlMyIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUobmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9y
d2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialB1dEZvcndh
cmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0
Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBSZWY8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCkucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKTsKICAgICBhdXRvJiBpbXBsID0gZm9y
d2FyZGVkSW1wbC5nZXQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVk
SW1wbCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byYg
aW1wbCA9ICpmb3J3YXJkZWRJbXBsOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRv
U3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpbXBsLnNldE5hbWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBmNDM3NDJk
YjM5Yjg1YjBmNzM5NjY2MDJmMGRkNTBiZjhmNGE5YzEyLi4xYWUyOTdkZTJhMzYwZTQwNDgxNDYy
ZjEzMjc1YjM1Mjk5ZDA5OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIwMywxNiArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAppbmRleCA2OTNhZTRjOTA4OTE1ZDc4OWZlODFkOWEyOWViZDg5YjRmZWE3YzUyLi41MGIx
OGM2NWZjYjg0NjJhNDFhYmYyM2RhYjVkYjBhNGU2NmJiNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoK
QEAgLTE2NCwxNiArMTY0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0o
KSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiB2b2lk
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA0OTJlMGQ2YjFjYjBlYjI0MTUyMTcz
M2UwMDU2NzMyNTcxMjUyZWYxLi45NzcyMjc5ODY3YjFjMjNlMGQ4ZTIzNTQ2MGViMGFlODljMGMx
MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRv
bmx5VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgpAQCAtMjIzLDQ5ICsyMjMsNDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOwogfQogCi12b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRp
dmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwg
MCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VmFsdWUobmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2Fj
aGVkVmFsdWUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJj
YWNoZWRWYWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRDYWNoZWRWYWx1ZShuYXRpdmVWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggOTllMzBkM2Qz
YWY5ZmI1OWQ5ZmJjMzg2NjYxNWQ0ZGEyZTYxOGM1Zi4uZjE3ZTk1MzIzNzM3NmUyNDVkOGEzOTBm
YmRhMzIxNGM0ZWE4MTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC02MCwyMCArNjAsMjAg
QEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vu
c2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xv
bmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlw
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlw
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JU
ZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jv
b2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlIDogcHVibGljIEpT
Qzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0zMzIsMTIxICszMzIsMTIxIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RU
eXBlZGVmczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNU
ZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRMb25nTG9u
Z0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBu
YXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwg
MCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVk
ZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAK
LXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRl
ZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpT
VGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUg
PSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVW
YWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IDgwZjY1YjZhZjljNjI3MjIzZjI1ZDIyZGU2
MTNhN2I2ZGRiMzNjYTUuLjQ3Zjg2NmJmMGZlNmM2YTY4NTA1ZDg0YjA1NDI3NjU4MTViZWY4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTYXR0cmlidXRlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzYXR0cmlidXRlUmVhZG9ubHkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNh
dHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU2F0dHJpYnV0ZVByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY0LDE2ICsxNjQsMTYg
QEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
YXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTYXR0cmlidXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmli
dXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAg
ICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU2F0dHJpYnV0ZTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwCmluZGV4IDRmMTA1ZTA2ZjIxOGU5OTVkMmVjNzIxNTdiNzQwZWY4NDI4MjIz
ZDkuLmY4MzFlYWIyMzQ1NGY1MTdhZGZkZjQyOTc2MzM3ZTEzNjc0ZjVjNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNyZWFkb25seVBy
b3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTIz
LDE2ICsxMjMsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTcmVhZG9ubHk6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1
ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNyZWFk
b25seTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5jcHAKaW5kZXggYjIzMmIwNjVl
OTQyNmE0NjcwODE2ZDVmYjA5YWEwZTY3NjhhNTdkYy4uM2VmYTcxNDIxOTFlMjY5NDRjMThjNTM1
NWEwY2IxM2U5MWFmNmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19y
dW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIEpTVmFsdWUgQ0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0KSBjb25zdAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogfQogCi12b2lkIENGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3QsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBD
RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNl
ICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKIHsKICAgICBjb25zdCBDSW5zdGFuY2UqIGlu
c3RhbmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdCk7CiAgICAgTlBPYmpl
Y3QqIG9iaiA9IGluc3RhbmNlLT5nZXRPYmplY3QoKTsKQEAgLTY5LDE0ICs2OSwxNyBAQCB2b2lk
IENGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFu
Y2UgKmluc3QsIEpTVmFsdWUgYQogICAgICAgICBOUFZhcmlhbnQgdmFyaWFudDsKICAgICAgICAg
Y29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgYVZhbHVlLCAmdmFyaWFudCk7CiAKKyAgICAg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgewogICAgICAgICAgICAgSlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwotICAgICAgICAgICAgb2JqLT5fY2xhc3Mt
PnNldFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRlbnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICAg
ICAgcmVzdWx0ID0gb2JqLT5fY2xhc3MtPnNldFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRlbnRpZmll
ciwgJnZhcmlhbnQpOwogICAgICAgICAgICAgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgICAgIH0KIAogICAgICAgICBfTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUoJnZhcmlhbnQpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAppbmRl
eCAxMDY3MmVkOTgxYmY5YjY4NDhmNTZkMzMzMzQ3MmNlYmM3ZWFkODk3Li4yMTlmZWZlZTQzMWZk
NGJlNzMxMjY5NmU5OTQwNWFkODg2ZTRkYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRp
bWUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDRmllbGQgOiBwdWJsaWMgRmllbGQgewogICAg
IENGaWVsZChOUElkZW50aWZpZXIgaWRlbnQpIDogX2ZpZWxkSWRlbnRpZmllcihpZGVudCkgeyB9
CiAKICAgICBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Rh
bmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0
YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTlBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBfZmllbGRJZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5oCmluZGV4IDAwMjk0ZmFkZDA1OGFkOGQwM2RmN2FiMGNjNTI0ZGZiNWRmMjI2YjIuLjVm
ZTg1ZjVmNGMxM2RiOGYxYjdiZmM1ZjA3NWMwYjlhNWRjOWRlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNTIsNyArNTIsNyBAQAogY2xhc3MgRmllbGQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBj
b25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0lu
c3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5z
dGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIH5GaWVsZCgpIHsgfQog
fTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEluc3RhbmNlPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9CisgICAgdmlydHVhbCBib29sIHB1dChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsQmVn
aW4oKSB7IH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBBcnJheSB7CiAgICAgZXhwbGljaXQg
QXJyYXkoUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwgfkFycmF5KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBKU1ZhbHVl
IHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggNzY4OTY2YjQ4OThhMTRiN2MzZTcwZTlm
OTA1NGNlYTE4ZDlmNjYwZi4uYjU4ZDFiNjI5ZjQ4MTA0MTU3YTYyODkxYjIyZTllMDUwMmZhYWZl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgT2JqY0ZpZWxkIDogcHVibGljIEZpZWxkIHsKICAgICBPYmpjRmllbGQo
Q0ZTdHJpbmdSZWYgbmFtZSk7CiAgICAgCiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUlu
c3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFs
dWUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRl
KiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJdmFy
U3RydWN0UHRyIF9pdmFyOwpAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBPYmpjQXJyYXkgOiBwdWJs
aWMgQXJyYXkgewogcHVibGljOgogICAgIE9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0
cjxSb290T2JqZWN0PiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0
ZSAqZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3Q7Ci0gICAg
dmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5k
ZXgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1
ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGludCBpbmRleCkgY29uc3Q7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Q7CiAgICAgCiAgICAgT2JqZWN0U3Ry
dWN0UHRyIGdldE9iamNBcnJheSgpIGNvbnN0IHsgcmV0dXJuIF9hcnJheS5nZXQoKTsgfQpAQCAt
MTI1LDcgKzEyNSw3IEBAIGNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CiAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25z
dCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IGE2YzkwMjM4NjA5MGRl
YjA5MDUxMjY0ZWVkZDk4ODlhODFlNzhlMGEuLjU5MGYyMjUzYTkxNDJiMmNlN2UzZGMxZjgwODY5
MzYxYmY3YTBhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gW3dlYlNjcmlwdE9i
amVjdENsYXNzKCkgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOnZhbHVlIG9yaWdpblJvb3RPYmpl
Y3Q6cm9vdE9iamVjdC5nZXQoKSByb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCldOwogfQogCi12
b2lkIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0ZpZWxk
OjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5z
dGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewogICAgIGlkIHRhcmdldE9iamVjdCA9IChz
dGF0aWNfY2FzdDxjb25zdCBPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsK
ICAgICBpZCB2YWx1ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY09iamVjdChleGVjLCBhVmFsdWUpOwpA
QCAtMTM4LDkgKzEzOCwxMSBAQCB2b2lkIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKUwogICAgICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgICAgICBPYmpjSW5zdGFuY2U6Om1vdmVH
bG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
W2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
fQogCkBAIC0xNTIsMTYgKzE1NCwxNiBAQCBPYmpjQXJyYXk6Ok9iamNBcnJheShPYmplY3RTdHJ1
Y3RQdHIgYSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9iamVjdCkKIHsKIH0KIAotdm9pZCBP
YmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgs
IEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewog
ICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2Vy
dE9iamVjdDphdEluZGV4OildKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChp
bmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRdKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJh
eSBzaXplLiIpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIC8vIEFsd2F5cyB0cnkgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYW4gT2Jq
QyBvYmplY3QsIHNvIGl0IGNhbiBiZSBwbGFjZWQgaW4gdGhlCkBAIC0xNzAsOCArMTcyLDEwIEBA
IHZvaWQgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50
IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkKIAogICAgIEB0cnkgewogICAgICAgICBbX2FycmF5Lmdl
dCgpIGluc2VydE9iamVjdDpvVmFsdWUub2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlv
bikgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogfQogCkBAIC0yMjEsOCArMjI1LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmEK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpD
RmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCmluZGV4IGVmOTkyNDgyNzg2ZjcyNWQ3MGVlMWVkYzNlMDcwY2Y2YjdmOGNj
NWUuLmM1YjNjNGY3ZTdhMjE3OTI3MTIxYjNjN2U3YzBmMWE0OTY3MWI2NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTExMSwzMSArMTExLDI5IEBAIGJvb2wg
UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSAqZXhlYywKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRp
bWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+
KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9yIikpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICB0aGlzT2JqZWN0LT5n
ZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFs
dWUpOwogICAgIAotICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKK2Jvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCkKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGlt
ZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5
KCktPnNldFZhbHVlQXQoZXhlYywgaW5kZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9
CiAKIGJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA1
OGJhMDU5NmU2NDkxYTg0NDYyYmRjNmVlZDg2NGM1OWEyNTkyZWMxLi4wMThjMTMyNzhkYmEzZGQw
MzE3MWU1M2VmYzBhZDdkZjBlMTA3ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmgKQEAgLTU2LDggKzU2LDggQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJy
YXkgewogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4
IGY3Zjk4YmY4YzBmNTE1ZTJhOThlYzZmOWU3MDE2Mzk4NGU2NzY2NDUuLmE1NzNlMDVkNzU5YjA3
NTcwZDI2MjFkOGU2MjYwMzY0MWNiYjRlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcApAQCAtMTYxLDI1ICsxNjEsMjcgQEAgYm9vbCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9w
ZXIKICAgICByZXR1cm4gaW5zdGFuY2UtPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lT2JqZWN0
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50
aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAg
ICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+
bV9pbnN0YW5jZTsKICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKIAogICAgIC8vIFNldCB0aGUgdmFs
dWUgb2YgdGhlIHByb3BlcnR5LgorICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgRmllbGQg
KmFGaWVsZCA9IGluc3RhbmNlLT5nZXRDbGFzcygpLT5maWVsZE5hbWVkKHByb3BlcnR5TmFtZSwg
aW5zdGFuY2UuZ2V0KCkpOwogICAgIGlmIChhRmllbGQpCi0gICAgICAgIGFGaWVsZC0+c2V0VmFs
dWVUb0luc3RhbmNlKGV4ZWMsIGluc3RhbmNlLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIHJlc3Vs
dCA9IGFGaWVsZC0+c2V0VmFsdWVUb0luc3RhbmNlKGV4ZWMsIGluc3RhbmNlLmdldCgpLCB2YWx1
ZSk7CiAgICAgZWxzZSBpZiAoIWluc3RhbmNlLT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCi0gICAgICAgIGluc3RhbmNlLT5wdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJlc3VsdCA9IGlu
c3RhbmNlLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAKICAgICBpbnN0YW5jZS0+ZW5kKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBS
dW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IGIzYjY0MGFj
YzU0ZjM0OGRjNWFmZTkyYzVmMzhmZTYyMjk0ODVmODEuLjgxZDRlYmQzYjRkYmI3MDk5MTE1ZGEx
MDI4MmIyOWZiZmZiMTg2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLmgKaW5kZXggMTNlMzJiYTYyMGUzNTA3ZTA0MmE5MGU4MTc0NDNkOTNh
ZjYzYjYwMi4uYWZiYTEwMjBkOTVkYWViNjNlMTdjN2ZiOTMyMTQxYWU4ZTk0ZDg3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBQcm94eUluc3RhbmNlIDogcHVibGljIEpTQzo6QmluZGluZ3M6
Okluc3RhbmNlIHsKICAgICBKU0M6OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlBy
b3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGaWVs
ZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6
OkpTVmFsdWUpIGNvbnN0OworICAgIGJvb2wgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKICAgICAK
IAogICAgIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSogaW5zdGFuY2VQcm94eSgpIHsgcmV0
dXJuIG1faW5zdGFuY2VQcm94eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggOWNkMGZiYzFiNGMyNTRkYTU0YzQxNDZlZGUy
MDU4ZDdjYzBhZGMzMi4uNjcxNGU4Y2Y0YWIyNzUzNjBkZDZhMDk5MTQ2YzU0ZDMwNzVhYWJiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEpT
VmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9J
bnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogICAg
IAogICAgIHVpbnQ2NF90IG1fc2VydmVySWRlbnRpZmllcjsKIH07CkBAIC05MSw5ICs5MSw5IEBA
IEpTVmFsdWUgUHJveHlGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJbnN0YW5jZSogaW5zdGFuY2UpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFBy
b3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPmZpZWxkVmFsdWUoZXhlYywgdGhpcyk7CiB9CiAgICAg
Ci12b2lkIFByb3h5RmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlG
aWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2Uq
IGluc3RhbmNlLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogewotICAgIHN0YXRpY19jYXN0PGNvbnN0
IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPnNldEZpZWxkVmFsdWUoZXhlYywgdGhpcywgdmFs
dWUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFu
Y2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMsIHRoaXMsIHZhbHVlKTsKIH0KIAogY2xhc3MgUHJveHlN
ZXRob2QgOiBwdWJsaWMgSlNDOjpCaW5kaW5nczo6TWV0aG9kIHsKQEAgLTQxNiwxMCArNDE2LDEw
IEBAIEpTQzo6SlNWYWx1ZSBQcm94eUluc3RhbmNlOjpmaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmllbGQqIGZpZWxkKSBjb25zCiAgICAgcmV0dXJuIG1faW5zdGFuY2VQcm94eS0+
ZGVtYXJzaGFsVmFsdWUoZXhlYywgKGNoYXIqKUNGRGF0YUdldEJ5dGVQdHIocmVwbHktPm1fcmVz
dWx0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSkpOwogfQog
ICAgIAotdm9pZCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorYm9vbCBQcm94eUluc3Rh
bmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBK
U1ZhbHVlIHZhbHVlKSBjb25zdAogewogICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICB1aW50NjRfdCBzZXJ2
ZXJJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgUHJveHlGaWVsZCo+KGZpZWxkKS0+c2Vy
dmVySWRlbnRpZmllcigpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94
eS0+bmV4dFJlcXVlc3RJRCgpOwpAQCAtNDM0LDEwICs0MzQsMTEgQEAgdm9pZCBQcm94eUluc3Rh
bmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBK
U1ZhbHVlIHYKICAgICBpZiAobV9pbnN0YW5jZVByb3h5KQogICAgICAgICBtX2luc3RhbmNlUHJv
eHktPnJlbGVhc2VMb2NhbE9iamVjdCh2YWx1ZSk7CiAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VT
UykKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgd2Fp
dEZvclJlcGx5PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXF1
ZXN0SUQpOwogICAgIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2Vw
dGlvblRvRXhlY1N0YXRlKGV4ZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFByb3h5
SW5zdGFuY2U6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGE5MDViM2RmMGI2
OGFjNDhlZTJmYTFmY2YyYTg3ZjAzMTVhYmQ3YmQuLmQ1NjFhZTE0OGMyMmY1OTdkN2YxYWU4NGNi
N2QwZGY5MWMwY2EwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTI5NywyNyArMjk3LDI3IEBA
IGJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpT
TlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNO
UE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlm
ICghdGhpc09iamVjdC0+bV9ucE9iamVjdCkgewogICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NF
cnJvcihleGVjKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVu
dGlmaWVyKHByb3BlcnR5TmFtZSk7CiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1i
b2wuCiAgICAgaWYgKCFucElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNz
LT5oYXNQcm9wZXJ0eSB8fCAhdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9w
ZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2JqZWN0LCBucElkZW50aWZpZXIpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgd2UgdGhyb3cgYW4gZXhjZXB0aW9uIGhlcmU/Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghdGhpc09iamVjdC0+
bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBOUFZhcmlhbnQgdmFyaWFudDsKICAgICB0aGlzT2JqZWN0
LT5tX29iamVjdE1hcC0+Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChleGVjLCB2YWx1ZSwgdmFy
aWFudCk7CkBAIC0zMjcsOSArMzI3LDEwIEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAg
Ly8gdGhlIGNhbGwgaGFzIGZpbmlzaGVkLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2lu
UHJvdGVjdG9yIHByb3RlY3Rvcih0aGlzT2JqZWN0LT5tX29iamVjdE1hcCk7CiAKKyAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgIHRoaXNPYmpl
Y3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVj
dCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7CisgICAgICAgIHJlc3VsdCA9IHRoaXNPYmplY3Qt
Pm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwg
bnBJZGVudGlmaWVyLCAmdmFyaWFudCk7CiAKICAgICAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjpt
b3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAKQEAgLTMzNyw2ICszMzgsNyBA
QCB2b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgogICAgIH0KIAogICAgIHJlbGVhc2VOUFZhcmlhbnRW
YWx1ZSgmdmFyaWFudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBKU05QT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IGE2YmJmN2M4N2M0Yzk4YTQ2Y2U1
OWVjZWZiMzY2MGUwN2VhYjI0ZTYuLjhiYWZlYjA2MGEyMTA2NmQ4ZWFhNjA4NzRjMDNhYzk5ZjBj
ZjRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBjbGFzcyBKU05QT2JqZWN0
IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyBKU0M6OkNv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0
RGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5NGYwZGZmOWZmNzI0NjhlODlmZGUzNGI3NDZjYmYzNDA3ODk2MThiLi4yMTlk
ZDM1MzRhODg1YjViYjhjYTVhZWQyY2Q1ODhlODkzNjA4YjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVjZWl2ZXIgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBq
cy9kb20vcmVmbGVjdC1zZXQtb250by1kb20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vcmVmbGVjdC1zZXQtb250by1kb20uaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
ZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0LXNldC1vbnRvLWRvbS5qczogQWRkZWQuCisKIDIwMTYt
MDMtMTEgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNraXAg
Y29udGVudC1lZGl0YWJsZS1hcy10ZXh0YXJlYS5odG1sIG9uIEdUSyBhcyBpdCB1c2VzIEFYIEFQ
SS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9yZWZsZWN0LXNldC1vbnRvLWRvbS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQtb250by1kb20tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNmQ0OGQ1MmUyMDZmYjY2MGU2NWE2YmUyYzE1NGQ4NjNj
MmY4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQt
b250by1kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzMgQEAKK1Rlc3QgZW5zdXJlcyBSZWZs
ZWN0LnNldCBmdW5jdGlvbmFsaXR5IHdpdGggRE9NIG9iamVjdHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitDdXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4g
VGhlc2Ugc2V0dGVycyBhcmUgdHJlYXRlZCBhcyBzZXR0ZXJzIGluIEVDTUEyNjIuIFJlZmxlY3Qu
c2V0IHJldHVybnMgdHJ1ZSBiZWNhdXNlIGEgc2V0dGVyIGlzIGZvdW5kLgorUEFTUyBSZWZsZWN0
LnNldChkb2N1bWVudC5ib2R5LCAic2Nyb2xsVG9wIiwgIiNIZWxsbyIpIGlzIHRydWUKK1BBU1Mg
UmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keSwgInNjcm9sbFRvcCIpIGlzIG5vdCAiI0hlbGxvIgor
UEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LCAic2Nyb2xsVG9wIiwgMCkgaXMgdHJ1ZQor
UEFTUyBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LCAic2Nyb2xsVG9wIikgaXMgMAorQ3VzdG9t
QWNjZXNzb3Igd2l0aCBSZWFkT25seQorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVudCwgImNvbXBh
dE1vZGUiLCBmYWxzZSkgaXMgZmFsc2UKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQsICJjb21w
YXRNb2RlIikgaXMgIkJhY2tDb21wYXQiCitDdXN0b21BY2Nlc3NvciB3aXRob3V0IHNldHRlciBm
b3IgRE9NIG9iamVjdHMKK1BBU1MgUmVmbGVjdC5zZXQod2luZG93Lmhpc3RvcnksICJsZW5ndGgi
LCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpIGlzIGZhbHNlCitQQVNTIFJlZmxlY3QuZ2V0KHdp
bmRvdy5oaXN0b3J5LCAibGVuZ3RoIikgaXMgbm90ICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIgor
Q3VzdG9tVmFsdWUgc2V0dGVycy4KK1BBU1MgUmVmbGVjdC5zZXQod2luZG93LCAiRXZlbnQiLCAi
aHR0cDovL3d3dy5leGFtcGxlLmNvbSIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQod2luZG93
LCAiRXZlbnQiKSBpcyAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIKK0N1c3RvbVZhbHVlIHNldHRl
cnMgd2l0aCB3cml0YWJsZT1mYWxzZS4KK1BBU1MgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5k
b3csICJNb3VzZUV2ZW50IiwgeworICAgIHdyaXRhYmxlOiBmYWxzZQorfSkgaXMgdHJ1ZQorUEFT
UyBSZWZsZWN0LnNldCh3aW5kb3csICJNb3VzZUV2ZW50IiwgImh0dHA6Ly93d3cuZXhhbXBsZS5j
b20iKSBpcyBmYWxzZQorUEFTUyBSZWZsZWN0LmdldCh3aW5kb3csICJNb3VzZUV2ZW50IikgaXMg
b3JpZ2luYWxNb3VzZUV2ZW50CitwdXREZWxlZ2F0ZSBDdXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZv
ciBET00gb2JqZWN0cy4KK1BBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNo
IiwgIiNIZWxsbyIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24s
ICJoYXNoIikgaXMgIiNIZWxsbyIKK1BBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24s
ICJoYXNoIiwgIiNPVVQiKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0
aW9uLCAiaGFzaCIpIGlzICIjT1VUIgorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5sb2NhdGlv
biwgMCwgIiNIZWxsbyIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRp
b24sIDApIGlzICIjSGVsbG8iCitQQVNTIFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAw
LCAiI09VVCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sIDAp
IGlzICIjT1VUIgorcHV0RGVsZWdhdGUgQ3VzdG9tQWNjZXNzb3Igd2l0aG91dCBzZXR0ZXIgZm9y
IERPTSBvYmplY3RzCitQQVNTIFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAib3JpZ2lu
IiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKSBpcyBmYWxzZQorTlBBUEkgb2JqZWN0IHdpdGgg
UmVmbGVjdC5zZXQKK1BBU1MgUmVmbGVjdC5zZXQobnBvYmplY3QsICJDb2NvYSIsICJTd2VldCIp
IGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQobnBvYmplY3QsICJDb2NvYSIpIGlzICJTd2VldCIK
K1BBU1MgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShucG9iamVjdCwgIkNvY29hIiwgeworICAgIHdy
aXRhYmxlOiBmYWxzZQorfSkgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LnNldChucG9iamVjdCwgIkNv
Y29hIiwgIkhlbGxvIikgaXMgZmFsc2UKK1BBU1MgUmVmbGVjdC5nZXQobnBvYmplY3QsICJDb2Nv
YSIpIGlzICJTd2VldCIKK1BBU1MgUmVmbGVjdC5zZXQobnBvYmplY3QsIDAsICJTd2VldCIpIGlz
IHRydWUKK1BBU1MgUmVmbGVjdC5nZXQobnBvYmplY3QsIDApIGlzICJTd2VldCIKK1BBU1MgUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShucG9iamVjdCwgMCwgeworICAgIHdyaXRhYmxlOiBmYWxzZQor
fSkgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LnNldChucG9iamVjdCwgMCwgIkhlbGxvIikgaXMgZmFs
c2UKK1BBU1MgUmVmbGVjdC5nZXQobnBvYmplY3QsIDApIGlzICJTd2VldCIKK0RPTVN0cmluZ01h
cAorUEFTUyBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJj
YXBwdWNjaW5vIgorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2Nv
YSIsICJzd2VldCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRh
c2V0LCAiY29jb2EiKSBpcyAic3dlZXQiCitQQVNTIFJlZmxlY3Quc2V0KGRvY3VtZW50LmJvZHku
ZGF0YXNldCwgImNvY29hLWNhcHB1Y2Npbm8iLCAic3dlZXQiKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBSZWZsZWN0LnNldChkb2N1
bWVudC5ib2R5LmRhdGFzZXQsIDAsICJzd2VldCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQo
ZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwKSBpcyAic3dlZXQiCitDdXN0b21JbmRleGVkU2V0dGVy
CitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkudmFsdWUgaXMgImNvY29hIgorUEFTUyBSZWZs
ZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKSBpcyAzCitQQVNTIFJlZmxlY3Quc2V0KHNlbGVjdCwg
MCwgb3B0aW9uKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkudmFsdWUgaXMg
Im1vY2hhIgorUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKSBpcyAzCitQQVNTIFJl
ZmxlY3Quc2V0KHNlbGVjdCwgNDIsIG9wdGlvbikgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LmdldChz
ZWxlY3QsICJsZW5ndGgiKSBpcyA0MgorUEFTUyBSZWZsZWN0LnNldChzZWxlY3QsIDQ0LCBvcHRp
b24yKSBpcyB0cnVlCitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgNDQpLnZhbHVlIGlzICJraWxp
bWFuamFybyIKK1BBU1MgUmVmbGVjdC5zZXQoc2VsZWN0LCAyMCwgIktpbGltYW5qYXJvIikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQtb250by1kb20uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YWI3MzZiMTNlOGFmMDY5MTYzNGZiMmIwYmU1ZDMyMzUxMDdlODA5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwKQEAgLTAsMCAr
MSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZW1iZWQgaWQ9InRlc3RQbHVnaW4iIHR5
cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMjAwIj48L2VtYmVkPgorPHNlbGVjdCBpZD0idGVzdFNlbGVjdCI+CisgICAgPG9wdGlvbiB2
YWx1ZT0iY29jb2EiPkNvY29hPC9vcHRpb24+CisgICAgPG9wdGlvbiB2YWx1ZT0iY2FwcHVjY2lu
byIgc2VsZWN0ZWQ+Q2FwcHVjY2lubzwvb3B0aW9uPgorICAgIDxvcHRpb24gdmFsdWU9Im1hdGNo
YSI+TWF0Y2hhPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
cmVmbGVjdC1zZXQtb250by1kb20uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0LXNldC1vbnRv
LWRvbS5qcyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250
by1kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc2OTY0NGZjOTNmZjIwYmQ0N2I3YjEzZmViNDI2ZTNmZDkw
NGYzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMv
cmVmbGVjdC1zZXQtb250by1kb20uanMKQEAgLTAsMCArMSw4NiBAQAorZGVzY3JpcHRpb24oIlRl
c3QgZW5zdXJlcyBSZWZsZWN0LnNldCBmdW5jdGlvbmFsaXR5IHdpdGggRE9NIG9iamVjdHMuIik7
CisKK2RlYnVnKCJDdXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4gVGhlc2Ug
c2V0dGVycyBhcmUgdHJlYXRlZCBhcyBzZXR0ZXJzIGluIEVDTUEyNjIuIFJlZmxlY3Quc2V0IHJl
dHVybnMgdHJ1ZSBiZWNhdXNlIGEgc2V0dGVyIGlzIGZvdW5kLiIpOworc2hvdWxkQmUoYFJlZmxl
Y3Quc2V0KGRvY3VtZW50LmJvZHksICJzY3JvbGxUb3AiLCAiI0hlbGxvIilgLCBgdHJ1ZWApOwor
c2hvdWxkTm90QmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHksICJzY3JvbGxUb3AiKWAsIGAi
I0hlbGxvImApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRvY3VtZW50LmJvZHksICJzY3JvbGxU
b3AiLCAwKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keSwg
InNjcm9sbFRvcCIpYCwgYDBgKTsKKworZGVidWcoIkN1c3RvbUFjY2Vzc29yIHdpdGggUmVhZE9u
bHkiKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChkb2N1bWVudCwgImNvbXBhdE1vZGUiLCBmYWxz
ZSlgLCBgZmFsc2VgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVudCwgImNvbXBhdE1v
ZGUiKWAsIGAiQmFja0NvbXBhdCJgKTsKKworZGVidWcoIkN1c3RvbUFjY2Vzc29yIHdpdGhvdXQg
c2V0dGVyIGZvciBET00gb2JqZWN0cyIpOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KHdpbmRvdy5o
aXN0b3J5LCAibGVuZ3RoIiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKWAsIGBmYWxzZWApOwor
c2hvdWxkTm90QmUoYFJlZmxlY3QuZ2V0KHdpbmRvdy5oaXN0b3J5LCAibGVuZ3RoIilgLCBgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iYCk7CisKK2RlYnVnKCJDdXN0b21WYWx1ZSBzZXR0ZXJzLiIp
Oworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KHdpbmRvdywgIkV2ZW50IiwgImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20iKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQod2luZG93LCAiRXZl
bnQiKWAsICBgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iYCk7CisKK2RlYnVnKCJDdXN0b21WYWx1
ZSBzZXR0ZXJzIHdpdGggd3JpdGFibGU9ZmFsc2UuIik7Cit2YXIgb3JpZ2luYWxNb3VzZUV2ZW50
ID0gTW91c2VFdmVudDsKK3Nob3VsZEJlKGBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywg
Ik1vdXNlRXZlbnQiLCB7CisgICAgd3JpdGFibGU6IGZhbHNlCit9KWAsIGB0cnVlYCk7CitzaG91
bGRCZShgUmVmbGVjdC5zZXQod2luZG93LCAiTW91c2VFdmVudCIsICJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIilgLCBgZmFsc2VgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldCh3aW5kb3csICJNb3Vz
ZUV2ZW50IilgLCBgb3JpZ2luYWxNb3VzZUV2ZW50YCk7CisKK2RlYnVnKCJwdXREZWxlZ2F0ZSBD
dXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4iKTsKK3Nob3VsZEJlKGBSZWZs
ZWN0LnNldChkb2N1bWVudC5sb2NhdGlvbiwgImhhc2giLCAiI0hlbGxvIilgLCBgdHJ1ZWApOwor
c2hvdWxkQmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIpYCwgYCIjSGVs
bG8iYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIiwg
IiNPVVQiKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRp
b24sICJoYXNoIilgLCBgIiNPVVQiYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQu
bG9jYXRpb24sIDAsICIjSGVsbG8iKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQo
ZG9jdW1lbnQubG9jYXRpb24sIDApYCwgYCIjSGVsbG8iYCk7CitzaG91bGRCZShgUmVmbGVjdC5z
ZXQoZG9jdW1lbnQubG9jYXRpb24sIDAsICIjT1VUIilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJl
ZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwKWAsIGAiI09VVCJgKTsKKworZGVidWcoInB1
dERlbGVnYXRlIEN1c3RvbUFjY2Vzc29yIHdpdGhvdXQgc2V0dGVyIGZvciBET00gb2JqZWN0cyIp
Oworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAib3JpZ2luIiwgImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKWAsIGBmYWxzZWApOworCitkZWJ1ZygiTlBBUEkgb2JqZWN0
IHdpdGggUmVmbGVjdC5zZXQiKTsKK3ZhciBucG9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0UGx1Z2luIik7CitzaG91bGRCZShgUmVmbGVjdC5zZXQobnBvYmplY3QsICJDb2Nv
YSIsICJTd2VldCIpYCwgYHRydWVgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChucG9iamVjdCwg
IkNvY29hIilgLCBgIlN3ZWV0ImApOworc2hvdWxkQmUoYFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
bnBvYmplY3QsICJDb2NvYSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pYCwgYHRydWVgKTsK
K3Nob3VsZEJlKGBSZWZsZWN0LnNldChucG9iamVjdCwgIkNvY29hIiwgIkhlbGxvIilgLCBgZmFs
c2VgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChucG9iamVjdCwgIkNvY29hIilgLCBgIlN3ZWV0
ImApOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KG5wb2JqZWN0LCAwLCAiU3dlZXQiKWAsIGB0cnVl
YCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQobnBvYmplY3QsIDApYCwgYCJTd2VldCJgKTsKK3No
b3VsZEJlKGBSZWZsZWN0LmRlZmluZVByb3BlcnR5KG5wb2JqZWN0LCAwLCB7CisgICAgd3JpdGFi
bGU6IGZhbHNlCit9KWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQobnBvYmplY3Qs
IDAsICJIZWxsbyIpYCwgYGZhbHNlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQobnBvYmplY3Qs
IDApYCwgYCJTd2VldCJgKTsKKworZGVidWcoIkRPTVN0cmluZ01hcCIpOworZG9jdW1lbnQuYm9k
eS5zZXRBdHRyaWJ1dGUoImRhdGEtY29jb2EiLCAiY2FwcHVjY2lubyIpOworc2hvdWxkQmUoYFJl
ZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIilgLCBgImNhcHB1Y2Npbm8i
YCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2Ei
LCAic3dlZXQiKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9k
eS5kYXRhc2V0LCAiY29jb2EiKWAsIGAic3dlZXQiYCk7CitzaG91bGRUaHJvdyhgUmVmbGVjdC5z
ZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EtY2FwcHVjY2lubyIsICJzd2VldCIpYCk7
CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwLCAic3dlZXQi
KWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0
LCAwKWAsIGAic3dlZXQiYCk7CisKK2RlYnVnKCJDdXN0b21JbmRleGVkU2V0dGVyIik7Cit2YXIg
c2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTZWxlY3QiKTsKK3Nob3VsZEJl
KGBSZWZsZWN0LmdldChzZWxlY3QsIDApLnZhbHVlYCwgYCJjb2NvYSJgKTsKK3Nob3VsZEJlKGBS
ZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKWAsIGAzYCk7Cit2YXIgb3B0aW9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CitvcHRpb24udmFsdWUgPSAibW9jaGEiOworb3B0
aW9uLnRleHRDb250ZW50ID0gIk1vY2hhIjsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChzZWxlY3Qs
IDAsIG9wdGlvbilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCku
dmFsdWVgLCBgIm1vY2hhImApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwgImxlbmd0
aCIpYCwgYDNgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChzZWxlY3QsIDQyLCBvcHRpb24pYCwg
YHRydWVgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKWAsIGA0MmAp
OyAgLy8gVXBkYXRlIHZhbGlkaXR5IHByZXZlbnQgdXMgdG8gaW5zZXJ0IGR1cGxpY2F0ZSBvcHRp
b25zLgorCit2YXIgb3B0aW9uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwor
b3B0aW9uMi52YWx1ZSA9ICJraWxpbWFuamFybyI7CitvcHRpb24yLnRleHRDb250ZW50ID0gIktp
bGltYW5qYXJvIjsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChzZWxlY3QsIDQ0LCBvcHRpb24yKWAs
IGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoc2VsZWN0LCA0NCkudmFsdWVgLCBgImtp
bGltYW5qYXJvImApOworc2hvdWxkVGhyb3coYFJlZmxlY3Quc2V0KHNlbGVjdCwgMjAsICJLaWxp
bWFuamFybyIpYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273717</attachid>
            <date>2016-03-11 03:22:25 -0800</date>
            <delta_ts>2016-03-11 09:13:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155024-20160311202211.patch</filename>
            <type>text/plain</type>
            <size>416431</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTY0MGQwODc4NmQ1Y2UzMTVhZjA2NGM0MzNmODdiMTkwODFhZmUzLi4xODNiM2YzNzViODJkZGRk
YTljYzcwYjlmMzNiOGJiZDllMWM0ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTcgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVj
ZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFJlZmxlY3Quc2V0LgorICAgICAgICBUaGUgY2hh
bGxlbmdlIGluIHRoaXMgcGF0Y2ggaXMgUmVmbGVjdC5zZXQgcmVxdWlyZXMgYm9vbGVhbiByZXN1
bHQgb2YgW1tTZXRdXSwKKyAgICAgICAgdGhpcyBpcyBub3QgcHJvcGFnYXRlZCBpbiB0aGUgcHJl
dmlvdXMgSlNDIHB1dCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgdGhlIHB1dCBhbmQgcHV0QnlJbmRleCBzaWduYXR1cmUgZnJvbSBgdm9pZCBwdXQoLi4uKWAg
YW5kIGB2b2lkIHB1dEJ5SW5kZXgoLi4uKWAgdG8gYGJvb2wgcHV0KC4uLilgIGFuZCBgYm9vbCBw
dXRCeUluZGV4KC4uLilgLAorICAgICAgICBtb3JlIGNvbnNpc3RlbnQgc3R5bGUgdG8gdGhlIEVD
TUEyNjIgc3BlYydzIFtbU2V0XV0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBzbyBt
YW55IHBhcnQgb2YgV2ViS2l0LiBCdXQgYWxtb3N0IGFsbCB0aGUgY2hhbmdlcyBhcmUgbWVjaGFu
aWNhbCBvbmVzLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBzdXBw
b3J0IHJlY2VpdmVyIG1vZGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICBUaGlzIHdpbGwgYmUg
c3VwcG9ydGVkIGluIHRoZSBzdWJzZXF1ZW50IHBhdGNoWzFdLgorCisgICAgICAgIFsxXTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NAorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleCk6Cisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyU2NvcGU6OnB1dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6cHV0KToKKyAgICAg
ICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0
ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5j
cHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6cHV0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dElu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZp
cm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dEdldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpkZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlC
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAg
ICAgIChKU0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXNUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAg
KEpTQzo6bG9va3VwUHV0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21t
b24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICog
cnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90
Lmg6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdFNldCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAo
SlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkpOgorICAgICAgICAoSlNDOjpT
cGFyc2VBcnJheUVudHJ5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgICogdGVz
dHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanM6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHJlY2VpdmVyQ2FzZS5vYmpl
Y3QyLnNldCBDb2NvYSk6CisgICAgICAgIChyZWNlaXZlckNhc2UpOgorICAgICAgICAocHJveHlD
YXNlKToKKyAgICAgICAgKG9iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChv
YmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcnJheUNhc2Uuc2V0IGdldCBzaG91
bGRCZSk6CisgICAgICAgIChhcnJheUNhc2UuZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5
QnVmZmVyQ2FzZS5zZXQgZ2V0IHNob3VsZEJlKToKKyAgICAgICAgKGFycmF5QnVmZmVyQ2FzZS5n
ZXQgc2hvdWxkQmUpOgorICAgICAgICAoc2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChnZXQg
c2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRDYXNlLnRlc3QxKToKKyAgICAgICAgKGFyZ3Vt
ZW50Q2FzZS50ZXN0Mik6CisgICAgICAgIChhcmd1bWVudENhc2UudGVzdDMpOgorICAgICAgICAo
YXJndW1lbnRDYXNlLnRlc3Q0LnNldCBnZXQgc2hvdWxkQmUpOgorICAgICAgICAoYXJndW1lbnRD
YXNlLnRlc3Q1LmdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVz
dDEpOgorICAgICAgICAoYXJndW1lbnRTdHJpY3RDYXNlLnRlc3QyKToKKyAgICAgICAgKGFyZ3Vt
ZW50U3RyaWN0Q2FzZS50ZXN0Myk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDQu
c2V0IGdldCBzaG91bGRCZSk6CisgICAgICAgIChhcmd1bWVudFN0cmljdENhc2UudGVzdDUuZ2V0
IHNob3VsZEJlKToKKyAgICAgICAgKHN0cmluZ09iamVjdENhc2Uuc2V0IGdldCBzaG91bGRCZSk6
CisgICAgICAgIChzdHJpbmdPYmplY3RDYXNlLmdldCBzaG91bGRCZSk6CisgICAgICAgIChjdXN0
b21TZXR0ZXIudGVzdDEpOgorICAgICAgICAoY3VzdG9tU2V0dGVyLnRlc3QyKToKKyAgICAgICAg
KGN1c3RvbVNldHRlci50ZXN0Myk6CisgICAgICAgIChjdXN0b21TZXR0ZXIpOgorICAgICAgICAo
cmVnRXhwTGFzdEluZGV4KToKKyAgICAgICAgKGZ1bmN0aW9uQ2FzZS5mdW5jKToKKwogMjAxNi0w
My0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggQ2hhbmdlbG9nLiBnaXQgbWVyZ2VkIHBvb3JseS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMTY5Zjg2Yzc4YmI2MmZlNDFjOGVlMGY4OWI3ZjEyYTc3YWM5YzVjLi4wNTA2N2NlMGI3YjZm
ZjIwMGFiZjEwZWQzZDY0MGNmNTlkMWM1Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBA
CisyMDE2LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2VpdmVyIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1c3Rv
bVNldHRlciByZXR1cm5zIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIHJlc3VsdCBv
ZiBbW1NldF1dLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhpcyBjaGFuZ2UsIHRoaXMgcGF0Y2gg
bW9kaWZpZXMgdGhlIENvZGVHZW5lcmF0b3JKUyBhbmQgdGVzdCByZXN1bHRzLgorCisgICAgICAg
IEN1cnJlbnRseSwgRE9NIGVsZW1lbnRzJyBbW1NldF1dIHJldHVybiB0cnVlIHdoZW4gdGhlIHNl
dHRlciBpcyBmb3VuZC4KKyAgICAgICAgVGhpcyBpcyBnb29kIGZvciB0aGUgZmlyc3Qgc3RlcC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dGhyb3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dEJ5SW5kZXgpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9i
amVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6cHV0RGVs
ZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJm
YWNlOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZU5hbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVy
RXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
Qnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9u
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3Ry
aW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9v
bGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
VVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
T25mb28pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVy
cnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaWN0RmxvYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVk
ZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRnZS9jL2NfcnVudGltZS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6
CisgICAgICAgICogYnJpZGdlL2MvY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpwdXQpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6c2V0
VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0
VmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OnB1dCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlND
OjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJ
bmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9i
amVjdDo6cHV0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAxNi0w
My0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzaG91bGQgcGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBieSByZWZlcmVuY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAzZjU2YmQ2OGU2MWViYmNjN2E3YjgxMGVjYTU1ZWY3ZmE0YTI1OTEzLi4x
MzU0MmNlZWUwMDM2YWMzNDkxMmIyMWVjNjU3NTNkMGY0OWVjNGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZmxlY3Quc2V0IHdpdGhv
dXQgcmVjZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gTlBKU09iamVjdCwgd2UganVzdCBwcm9wYWdhdGUg
dGhlIHJldHVybmVkIHZhbHVlIG9mIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c2V0UHJv
cGVydHkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6
UHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJ
bnN0YW5jZTo6c2V0RmllbGRWYWx1ZSk6CisKIDIwMTYtMDMtMTAgIEplcmVteSBKb25lcyAgPGpl
cmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5IG9uIEFWQXNzZXQgdG8gbWF0Y2ggY2FjaGluZyBwb2xpY3kuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZmQwYWNjNDljNWJjMmE2OWFiMzJhZDI2NzcwM2JjZDg4MmIzODFlMy4uYWVhOGZjYjlhNGY5
ZjliMzQ3OGFmYWQ0MzcxN2RjNjc4ODU4MDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE2LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWZsZWN0LnNldCB3aXRob3V0IHJlY2VpdmVyIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5QSlNP
YmplY3Q6OnNldFByb3BlcnR5IG1heSBjYWxsIGBtZXRob2RUYWJsZSgpLT5wdXRgIG9wZXJhdGlv
biwgYnV0IHdlIGludGVudGlvbmFsbHkgZG8gbm90IHByb3BhZ2F0ZSBpdCB0byB0aGUgY2FsbGVy
J3MgOjpwdXQuCisgICAgICAgIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3ZSBqdXN0
IHVzZSB0aGUgcmVzdWx0IG9mIDo6c2V0UHJvcGVydHkgY2FsbC4KKyAgICAgICAgVGhpcyBpcyBg
dHJ1ZWAgd2hlbiA6OnNldFByb3BlcnR5IGF0dGVtcHRzIHRvIGNhbGwgYG1ldGhvZFRhYmxlKCkt
PnB1dGAuCisgICAgICAgIEluIDo6c2V0UHJvcGVydHksIGFmdGVyIGNhbGxpbmcgYG1ldGhvZFRh
YmxlKCktPnB1dGAsIDo6c2V0UHJvcGVydHkgZnVuY3Rpb24gY2xlYXJzIHRoZSBleGNlcHRpb24g
c3RhdGUuCisgICAgICAgIFNvIHRoaXMgaXMgbm90IHRoZSBzYW1lIHNlbWFudGljcyB0byB0aGUg
c2ltcGxlIGRhdGEgcHJvcGVydHkgc3RvcmUuIFJhdGhlciwgdGhpcyBpcyBsaWtlIHRoZSBhY2Nl
c3Nvci4KKyAgICAgICAgSW4gRUNNQTI2MiBbW1NldF1dLCBpdCByZXR1cm5zIHRydWUgaWYgdGhl
cmUgaXMgYSBzZXR0ZXIuIFNvIHdlIGp1c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiA6OnNl
dFByb3BlcnR5LgorICAgICAgICBUaGlzIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGEgc2V0dGVy
IGZvciB0aGUgZ2l2ZW4gW1tTZXRdXSBvcGVyYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBP
YmplY3Q6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaDoKKwogMjAxNi0wMy0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTc5ODYpOiBEb24ndCB0cnkgdG8gbGluayB0byB1
bmRlZmluZWQgJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBhZGRkMjE5ODYzMzllM2Mx
ZDBiMWU0MGNlMmJhZTdmN2NkYjdmNzZkLi5lOTU2M2Y1NGNlYThiMjYzYjE0MzM1NjcyMWQ0Y2Rk
ZDc5YzVlNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaApAQCAtMTgxLDggKzE4MSw4IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMg
UGFyZW50IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCA5NTIwMzlkY2NiODYyMjIwYzUzNjM0ZGM2ZjRjYzZhNDdl
NjVkNmY3Li5hNTUzNzIzNGJiMzJjYTY4NmRkMDZiMmFmZTlhMDdhOWQwMjU3ZjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtMjIyLDcgKzIyMiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12
b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNDYWxsYmFja09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlND
b250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwpAQCAtMjQ0LDEzICsyNDQsMTMgQEAKICAgICAg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJs
ZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQo
bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGVudHJ5
LT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CkBAIC0yNjEs
NyArMjYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCB8fCBleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNzIsOSArMjcyLDgg
QEAKICAgICAgICAgICAgICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAv
LyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9w
ZXJ0eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg0
LDcgKzI4Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHgg
PSB0b1JlZihleGVjKTsKQEAgLTMwNiwxMyArMzA1LDEzIEBACiAgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0
aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAg
ICAgICAgICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBlbnRyeS0+
c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKQEAgLTMyMyw3ICszMjIsNyBA
QAogICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0zMzEsNyArMzMwLDcgQEAKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlv
bnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMp
KSB7CiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNG
dW5jdGlvbnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXgg
YzNlZmJkNTZkZDcwZGVhY2EzNjMzOTI0YTkyMjlkMzYxMzkzMjAxNS4uMzY1MDI0ZTg4ZjI2YWUx
NDZhOWU4YmE0Y2MyZjRjYmQ1YTM1NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtOTgsMTUgKzk4LDE1IEBAIGJvb2wgRGVi
dWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBEZWJ1Z2dlclNj
b3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGVi
dWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwp
OwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsK
ICAgICBzbG90LnNldFRoaXNWYWx1ZShKU1ZhbHVlKHRoaXNPYmplY3QpKTsKLSAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBE
ZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZlZjYwYzg5OWY3ZjE0ODNlMzJjYzdhODM4
MzNlMGFmOTQwNDcyZGIuLmUzNGY0OTdkN2ZiMzMzYWFlZTc2MDkyNDM4NjRmMzVjMGE3OGE1MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3Bl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApA
QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNjI5NDFkNDlm
MTczOTQ5ODdhODY0M2U0OWM3NzU4MmE2ZTZmYThkZS4uYTVjZjViMGQxOGExMjk2ZWNjMDZiOGQ3
MTYyNDIzNmVhYjJhODFkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBA
QCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRl
eCwgc2xvdCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
JikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCAwNDUwYjUzYThm
NzBkZmE2YjQ1MWY2ZDY3Yzc5NjQ3ZDA0YmI0MWIzLi41OWE1Nzg4ZjAzY2Y5ZDdiYTM2ODc3Yzk0
NGRhNTA3N2IyN2MzM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaApAQCAtNTAsMTAgKzUwLDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRl
ZiBDb25zdHJ1Y3RUeXBlICgqR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CiAgICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIGdldENvbnN0
cnVjdERhdGE7CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CisgICAgdHlwZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgIFB1dEZ1bmN0aW9uUHRyIHB1dDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKlB1
dEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpQ
dXRCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0
aW9uUHRyIHB1dEJ5SW5kZXg7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggODI0
MWQ2ZTBjMDc1NjQ0NzFjNWE5ZGE1MmUxNmQxYmE3M2JlZjk5NS4uNDgxZjE2YjNlOWVlYWZiYzUz
ZTdkNTE4NGVjNDU0NDcxYWQyYjExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBDbG9u
ZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm8KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIGFycmF5LCBtb2RlKTsKIH0KIAotdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnQsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKQEAgLTE3OCwxMSArMTc4LDEwIEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNW
CiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSB7
CiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShleGVj
KTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0gc2xvdDsgLy8gU2hhZG93IHRoZSBn
aXZlbiBQdXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNoaW5nLgotICAgICAgICBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFs
dWUsIGR1bW15KTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBp
ZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmgKaW5kZXggOGU3MTNkNWM2ZmE1Y2ExODQxMzRiMDUyYjJkNTg5OWEyNjc3YTMwZS4uNWQyMjIx
ODNjOWU3MDgzMjk0YjE0MTc2ZGE0ZWY1NjE5N2NiYjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xh
c3MgQ2xvbmVkQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1Y2UzYTM2OTJk
MmIwNmM0MzYzNTNmMjJhMmYzN2RmYjhhZjdjZjNjLi44NzM2ZDE5MjUzMDE0NjkyYjc0MWMyZDg2
ODJjMDQwYThjYzU5OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKQEAgLTM3LDE0ICszNywyNSBAQAogCiBjb25zdCBD
bGFzc0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXJTZXR0
ZXIiLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlclNldHRlcikgfTsKIAot
dm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjdXN0b21HZXR0
ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIHZhbHVlKQorYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29sIGlzQWNjZXNz
b3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVChzZXR0
ZXIpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0dGVyKGV4ZWMsIEpTVmFsdWU6OmVuY29kZSh0aGlz
VmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICAvLyBBbHdheXMgcmV0dXJuIHRy
dWUgaWYgdGhlcmUgaXMgYSBzZXR0ZXIgYW5kIGl0IGlzIG9ic2VydmVkIGFzIGFuIGFjY2Vzc29y
IHRvIHVzZXJzLgorICAgIGlmIChpc0FjY2Vzc29yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGN1c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVj
dCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNl
dHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPnNldHRlcigpOworICAgIC8vIFJldHVybiBmYWxz
ZSBzaW5jZSB0aGVyZSBpcyBubyBzZXR0ZXIuCiAgICAgaWYgKCFzZXR0ZXIpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNBY2Nlc3NvcikKICAgICAg
ICAgdGhpc1ZhbHVlID0gYmFzZTsKLSAgICBzZXR0ZXIoZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOworICAgIHJldHVybiBjYWxsQ3VzdG9t
U2V0dGVyKGV4ZWMsIHNldHRlciwgaXNBY2Nlc3NvciwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAppbmRleCBkZGRkOGM2ZmI0M2U3OWEzYmUyOTJlZDJlODQz
NzYzN2ViNmFkMzg4Li4yNGJmZjg4NGUwYmU4MGQ4MGUyYWE5ZGZiZTViMTI2ZjNmYzliN2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuaApAQCAtNzAsNyArNzAsOCBAQCBjbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9OwogCi1KU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjdXN0
b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RCYXNlLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0
b21TZXR0ZXIoRXhlY1N0YXRlKiwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIsIGJv
b2wgaXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3VzdG9tR2V0
dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0
aGlzVmFsdWUsIEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IDY3ZjFiMDM0
NWQ3MWI4ZDMzNjJmNjZiYjY1ZTJkY2YzYTM1ZDJhYTQuLmVkY2M2ZjFiOThkNmRhZGY4ODk3ZThh
ZjJmZjAyMjQ0NTI5YjNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgR2VuZXJpY0FyZ3Vt
ZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oCmluZGV4IDliMTgwMDE4NTc4MTA1YzU1MTY5NzIwYWU1ODc3YzNlM2UyNDZkZWUuLmQy
ZWIzNzExNTIxMjY0NWMzMTZmNzlkNDJlMjNiNzgwZmRkYmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApA
QCAtOTcsNyArOTcsNyBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotdm9pZCBHZW5l
cmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
Ym9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDgsMjggKzEwOCwyNyBAQAogICAgICAgICAg
ICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpKSB7CiAgICAg
ICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAgICAgUHV0UHJvcGVydHlT
bG90IGR1bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hlYWJsZSwgc28gd2Ugc2hh
ZG93IHRoZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgotICAgICAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgdmFsdWUsIGR1
bW15KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4
UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1
aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgotdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4o
Y2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5j
YW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnNldElu
ZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyY2Q2NmU1Y2Q0MmZkMDFkYjUy
ZGUwZDc2YmNmNGQyMTkxZWY3Y2I5Li44NzMwNzk0YTM0MjhmNmQ1ZWE4ZTlhMmI4Y2JhMjE0YzE3
YmM4NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQogICAgIHJldHVybiBjYWxs
KGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOwogfQog
Ci12b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
Z2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkKK2Jvb2wgY2Fs
bFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0
ZXIsIEpTVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7
CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBp
ZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIg
PSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHZvaWQgY2Fs
bFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0
ZXIsIEpTVmFsdWUgdmFsCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0
ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBiYXNlLCBhcmdzKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IGNk
MjA0MDI4ZWY5Y2FlMjlmODIxNGZjNmJmYWYzYWViNTU2ZjNmOTEuLjJiMjJiM2UwYjBjMDBjOTI3
YmY1Y2JkOTAwNDljZmU5MThlNTE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW5saW5lIEdldHRlclNldHRl
ciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKIH0KIAogSlNWYWx1ZSBjYWxsR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIpOwotSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUsIEVDTUFNb2RlKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGJvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVy
U2V0dGVyLCBKU1ZhbHVlLCBFQ01BTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGFmZGJlMGRlNzZlZDc5
YTJjNzM0M2RhN2Y3MWIwNmE3ZWJlZDFhNGYuLjFjMjkwYzgyN2MzM2ViN2E1ZDlkMGE5MTc4MzI1
MDMxZWNhODg1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgLy8gYS4g
SWYgdGhlIFtbVmFsdWVdXSBmaWVsZCBvZiBEZXNjIGlzIGFic2VudCwgdGhlbgogICAgICAgICAv
LyBhLmkuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRlZmF1bHQgW1tEZWZpbmVP
d25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBBIHBhc3NpbmcgImxlbmd0
aCIsIERlc2MsIGFuZCBUaHJvdyBhcyBhcmd1bWVudHMuCiAgICAgICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMs
IHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBm
b3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpOwogICAgICAgICAvLyBmcm9tIEVTNS4xIDguMTIuOSAxMC5hLgog
ICAgICAgICBpZiAoIWFycmF5LT5pc0xlbmd0aFdyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0
YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOwpAQCAtMTkwLDcg
KzE5MCw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiB9CiAKIC8vIEVDTUEgMTUuNC41LjEK
LXZvaWQgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwog
CkBAIC0xOTgsMTMgKzE5OCwxMiBAQCB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQogICAgICAgICB1
bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZh
bHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewog
ICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRM
ZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICB9CiAKLSAg
ICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpA
QCAtNjQ0LDcgKzY0Myw4IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZTogewogICAgICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBsZW5ndGgoKTsKLSAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSkpIHsKKyAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
aWYgKGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgb2xkTGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSwgcHV0UmVzdWx0KSkgewogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSAmJiBvbGRMZW5ndGggPCAweEZGRkZGRkZGdSkKICAgICAgICAgICAgICAgICBzZXRM
ZW5ndGgoZXhlYywgb2xkTGVuZ3RoICsgMSwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggOWYyNzM4MmRlYmQ3MTc1
YjUwOWMxZGZhNDk1MWI5ZWJkMmNiODJlNi4uY2NmM2JlZTNkY2E0YjMzYWRhMTM2YzQyZGU3MDFj
ZDZjYmE1YTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAt
MTU2LDcgKzE1Niw3IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCAzNTlh
ZTQ3YTUwYmU3ZWMyODAyODcwYzk2Nzc0ODQ2NDMwZTM0NGIxLi42ZGRlNGM3ZGZmY2EzMjMzMDBj
Nzg1Nzg3YTUyNzYwYWFjNTA2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmNwcApAQCAtNzksMTggKzc5LDE2IEBAIGJvb2wgSlNBcnJheUJ1
ZmZlcjo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotdm9pZCBK
U0FycmF5QnVmZmVyOjpwdXQoCitib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAgICBKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNBcnJheUJ1ZmZl
ciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyKj4oY2VsbCk7CiAgICAgCi0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aCkgewot
ICAgICAgICByZWplY3QoZXhlYywgc2xvdC5pc1N0cmljdE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8g
d3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmJ5dGVMZW5ndGgpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2xvdC5pc1N0cmlj
dE1vZGUoKSwgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgYXJyYXkgYnVmZmVy
IHByb3BlcnR5LiIpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTQXJyYXlCdWZm
ZXI6OmRlZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlci5oCmluZGV4IGQ2MzRkNzM2M2ZlNGE1MDhiOGFiOTgwY2ZiMDY1ZjMxMWE3
YWE2ZTguLmY3Njc1MzgzNzg0NGYwYTZmYjVhYzdjNDljYTI5YTM0NTM0Mzc5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCmluZGV4IDNiZmNhZjE1MjE5OTI1YjkzZWQ3ODdmNDE1MDFjOWI3N2JiNTVi
MTEuLmQ0YjVjYzBjNDM2YjU4MWJlYjE2OTQ4Y2E3MzJmMDA2MWY2MjFjODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTE2NCwxNyArMTY0LDE1IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCi12b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojpw
dXQoCitib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQoCiAgICAgSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCiAg
ICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7Ci0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKSB7Ci0gICAgICAgIHJlamVj
dChleGVjLCBzbG90LmlzU3RyaWN0TW9kZSgpLCAiQXR0ZW1wdGluZyB0byB3cml0ZSB0byByZWFk
LW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVydHkuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVmZmVyKQorICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKICAgICAKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6ZGVmaW5lT3duUHJvcGVy
dHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaAppbmRleCA1MjNhMjAwZmJhMmQ3NzJjMmI3M2YyZDRjNWZjNjVjNzEyZjZiOWJmLi5iMmNm
NWEyYjE5OTllNWQ3ZWEyZThhNDg3NWViZTQ3MzhlMDg4YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAyYmYxZDhmNmMwMTE0ODcx
NTI1NmQyNmFiMDllNWUzNzU2MWM1OTUxLi43NTQ4N2Q2ZjM5NjlhNTZjNjE0NWRiMDkwNTJlNzZi
MmE2ZTY3MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcApAQCAtMTI4LDE5ICsxMjgsMTcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogCiAvLyBFQ01BIDguNy4yCi12b2lk
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5
SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwog
CiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7CiAgICAgICAg
IGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CkBAIC0x
NDgsNyArMTQ2LDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIGlmIChw
cm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpAQCAtMTYwLDE5ICsxNTgsMTUgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNWYWx1
ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoZ3MuaXNHZXR0
ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxTZXR0ZXIoZXhlYywgKnRoaXMsIGdz
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNldHRl
cihleGVjLCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9k
ZSA6IE5vdFN0cmljdE1vZGUpOwogCi0gICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0
dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxD
dXN0b21TZXR0ZXIoZXhlYywgZ3MsIGF0dHJpYnV0ZXMgJiBDdXN0b21BY2Nlc3Nvciwgb2JqLCBz
bG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4g
ZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAg
ICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBA
IC0xODEsMzQgKzE3NSwzNSBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogCiAgICAgICAgIHBy
b3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAg
IHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9B
UlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxk
VGhyb3cpOwotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4
ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewogICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHByb3RvdHlw
ZS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCAq
dGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQotICAgICAgICByZXR1cm47
CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHJvdG90eXBlLT5hdHRlbXB0
VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKGV4ZWMsICp0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBj
YmJmMjYxZmFmMzA0OTliZWNmMzgxMTQ3ZmM3OGU0OTg1MDRlZjg2Li5hZGE4MDI5N2I4NDcxZjZi
YjNkOTBlODQyNjI5NGQ5NmQ3NGRmZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yODYsMTEgKzI4NiwxMSBAQCBjbGFzcyBKU1ZhbHVlIHsKIAog
ICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JikgY29uc3Q7CiAKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHZvaWQgcHV0SW5saW5lKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Cisg
ICAgYm9vbCBwdXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBib29sIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOworICAgIGJvb2wgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSB0b1RoaXMo
RXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA4YTUxMGI0MTA1OGRjNTdlMzY4
OTU3MjRjNjk1Y2VkZWQzNDZjNzBhLi5lZTNhMTZlNDI0NDBlNjlhMWIzNjhiN2UyNDE2M2E4Zjhi
YjU4MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKQEAgLTgwNyw0MCArODA3LDM2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBK
U1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgcmV0dXJuIGdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHN0YXRpY19jYXN0
PGRvdWJsZT4ocHJvcGVydHlOYW1lKSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpIHsKLSAg
ICAgICAgcHV0VG9QcmltaXRpdmUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKQorICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICByZXR1cm4gYXNDZWxsKCkt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNWYWx1ZTo6cHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6
OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFko
IWlzQ2VsbCgpKSkgewotICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IWlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworCiAgICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CiAgICAg
YXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0OwotICAg
IGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKSB7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShwdXRNZXRob2QgPT0gSlNPYmpl
Y3Q6OnB1dCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IG90aGVy
U2xvdCA9IHNsb3Q7Ci0gICAgcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIG90aGVyU2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgb3RoZXJTbG90KTsKICAgICBzbG90ID0gb3RoZXJTbG90Owor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewotICAgIGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIHB1dFRv
UHJpbWl0aXZlQnlJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CisgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCisgICAgICAgIHJldHVy
biBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOworCisgICAgcmV0dXJuIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA4ODA3
YTdkMDg0YWY0NzM3NGZkZDBkY2M4ZDBkMjc4NTk0Mjc0NDJkLi4yZGQyZmZhNTMwNDMyNDQyYmQ0
YWM1MzQ1MmMxZjZkYzM2NTU3MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTEwOCwyNSArMTA4LDIzIEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAg
cmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygp
IHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1p
dGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwg
dmFsdWUsIHNsb3QpOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVj
dChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwg
dmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIH0K
IAotdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiti
b29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKLSAgICAgICAgSlNWYWx1ZShj
ZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZp
ZXIpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVu
dGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwg
ZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXgg
MTMyMTc0NWFhMjJhYmRhZjIxZDM2YTVjNTY5YzUwNjU2ZTZlYzYwYy4uNjc3YzY1MTYyYzk0NTNj
YjFmNjk4OTZiYWU0YzdkZDRiZWY3MTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBjbGFzcyBKU0NlbGwgewogICAgIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhv
ZFRhYmxlKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikg
Y29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKaW5kZXggNDZiZjFjYmJlOTYyNDE0YmJhZjc4NGNkZWZiMzM5YjNlNGEy
OGQ1Yy4uOTBjNjRlZDQ5ZGNkNDA5NTE3ZTQ4ZmQ4Mjk0MmUyY2ViNTE1ZGVkMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTExMSwxOCArMTEx
LDE2IEBAIGJvb2wgSlNEYXRhVmlldzo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVybiBC
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotdm9pZCBKU0RhdGFWaWV3OjpwdXQoCitib29sIEpTRGF0YVZpZXc6OnB1dCgK
ICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZUxlbmd0aAotICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVPZmZzZXQp
IHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNsb3QuaXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5n
IHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ieXRlT2Zmc2V0KQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNsb3QuaXNT
dHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJh
eSBwcm9wZXJ0eS4iKTsKIAotICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRl
ZmluZU93blByb3BlcnR5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oCmluZGV4IGQ2NWZlMjc1ZmFjMzRlMTA1OWU5ZjcyNTVhMThjNTgwNmZkYTQ5ZmMuLjc3NGI2
ZDE1OGY3YzVmZmZjOTA5NTlhMzQ0MGRmN2QxZTFhZGQ2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSlNEYXRh
VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDlhNWE1NDc2NzEwZjQ5MjY3ZjYzNWQ2
NWZiYWQ4NmMxOWVkODU5NjYuLjUyY2E0MGQwY2E2ZTY1MThmZTY5NTNjZDEzNGQwMmUxMDlhM2Fl
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBA
IC00MjQsMTMgKzQyNCwxMiBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQogCi12b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQorYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkgewotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUp
IHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNo
IHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRo
ZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KQEAgLTQ0MCwyMyArNDM5LDIxIEBA
IHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVE
YXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsK
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRd
XSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2Fj
aGUodGhpc09iamVjdCk7Ci0gICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9u
dENhY2hlKTsKICAgICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSAmJiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7
CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVk
LCBpZiB0aGlzIGlzIG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0
aGlzT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKG9rYXksIG9rYXkpOwotICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bGVyKSB7CiAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNP
YmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTUy
Niw3ICs1MjMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIH0KICAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNz
IG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKKyAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNt
RXJyb3IpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0
b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggNmUzMzg1NjQ3YmY0MGY2
MWNiMzJmNzk4NjAxMGVjNTU0MWVlYTFiYy4uZWJlNDhjYTRiZDIxNDljYTQ3NzJkZjQzZDc3NDY1
MmVkZTg4YjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aApAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUg
ewogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVy
YXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKIAotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggODU4OTM5
MmFmY2RhMWY1YjAxOTdkYzQ5NTlhMjQ3ZTJkYjBmYmEzZC4uNDA3YTcxMmY1ODhkMGFmODIzMjBi
NTk4YTIyOTdmMWRjYjM4OTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNzQsMTIgKzI3NCwxMiBA
QCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmll
dyB7CiAgICAgZnJpZW5kIHN0cnVjdCBUeXBlZEFycmF5Q2xhc3NJbmZvczsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGI2YzZhZWQ4
ODE0YTlhYjJkY2NkMjBlNjExZTY3YzRmOWQ5Y2JhOTEuLmE4MGFjNjAxOWNiOTBhNmNiNmZhYWY4
OGYzMTc4NDMzYjRkOGViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMDMs
MTggKzMwMywxNiBAQAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotdm9pZCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KAorYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6cHV0KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogICAgIAotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
LSAgICAgICAgcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIAotICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtMzY0LDE5ICszNjIsMTcgQEAKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLXZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnB1dEJ5SW5kZXgoCitib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpwdXRCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FS
UkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTVmFsdWUodGhpc09i
amVjdCksIHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
cHV0KAotICAgICAgICAgICAgdGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9
CiAgICAgCi0gICAgdGhpc09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuY3BwCmluZGV4IDZkMTc2MDg2ZWFkMzkzM2RjMDFjYjc3MmY3ZDNhMTU5NDJmYmQwZjYuLmVm
ZmViZmI0NTE1MTEzMWZhMDU4NTQ1NDU4NWIzNDgwZTY1Nzk3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5jcHAKQEAgLTM4LDEzICszOCwxNSBAQCBib29sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi12b2lkIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKICAgICBib29sIGFs
d2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSA9IHRydWU7CiAgICAgYm9vbCBp
Z25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciA9IHNsb3QuaXNJbml0aWFsaXphdGlvbigpOwotICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGFsd2F5c1Rocm93V2hlbkFzc2lnbmluZ1RvQ29uc3RQcm9wZXJ0eSwg
aWdub3JlQ29uc3RBc3NpZ25tZW50RXJyb3IpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7
CisgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYWx3YXlzVGhyb3dXaGVuQXNzaWduaW5nVG9Db25zdFByb3Bl
cnR5LCBpZ25vcmVDb25zdEFzc2lnbm1lbnRFcnJvciwgcHV0UmVzdWx0KTsKKyAgICByZXR1cm4g
cHV0UmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCmlu
ZGV4IDY0M2YwOTVkZDE5Nzk5ZTVhYTMyNjBiMzk4MmE5YTkzZTU2YmY1MzAuLjhkNGZkMmUwNDYx
NTAwZTgyZGNjZDY4MGIxYWMxNmNmMWQ2ZjA3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXN5bWJvbFRhYmxl
KCktPnNpemUoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDVhZTkzOTEyMWViZDI3MzFhZjQ3MzYxYWU0MTk1MGI0
NmQ0NjlmYzAuLmI2ZDEwY2UzMTIzNWFhYzE0M2EyYWU0OWJiYzNiZWMwZjc5MDA3ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTYyOCwxNiArNjI4LDE3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0xlZ2FjeVByb2ZpbGVy
KCkgY29uc3QKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNM
ZWdhY3lQcm9maWxpbmcodGhpcyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0dsb2JhbE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpc09iamVjdCkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Ig
PSBzbG90LmlzU3RyaWN0TW9kZSgpOwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSBm
YWxzZTsKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycykpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgYm9vbCBwdXRS
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25s
eUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IHB1dFJlc3VsdDsKKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDQ0ODJlNjcxOGNkMDJkNDQ3ZDI0YmJiMzQ1OTA0Y2MxYTQyMTNhMmEu
LmUxY2Q1ZGE2MzFiNjFlZDgxMzEwOTUzYjFiNGJjM2E1OGI4YWM1ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDA0LDcgKzQwNCw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5j
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCBjMGMwOWVhMWEyY2I2MDM1
YTY5NTliZDJiZWIwNTliM2FmYzgzNDM2Li5kYzkyM2FjNjgwMWQyNzljZWFjMzFjOWMzMGZiZmQw
MGRkNThhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC04MCwyMSArODAsMjIgQEAgYm9vbCBKU0xleGlj
YWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNMZXhpY2FsRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogCiAg
ICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBzbG90LmlzU3RyaWN0TW9kZSgpIHx8
IHRoaXNPYmplY3QtPmlzTGV4aWNhbFNjb3BlKCk7CiAgICAgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycyA9IGZhbHNlOwotICAgIGlmIChzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50
U2V0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMpKQotICAgICAgICByZXR1cm47CisgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRl
V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpKQor
ICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogCiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdo
IHRvIEpTT2JqZWN0IGJlY2F1c2UgX19wcm90b19fIGFuZCBnZXR0ZXIvc2V0dGVyIAogICAgIC8v
IHByb3BlcnRpZXMgYXJlIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3RoZXIgaW1wbGVt
ZW50YXRpb25zIGRvIG5vdAogICAgIC8vIGV4cG9zZSBpbiB0aGUgbGV4aWNhbEVudmlyb25tZW50
IG9iamVjdC4KICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSk7Ci0gICAgdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRPd25E
YXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
YzQwYWU4NzM5NWNjMzEyMmQ2ODAzMWVjMmYzZmNkNTQ4N2UwZDhjNS4uNTE1ZTExNzljNjE0NDAy
N2YzZDYxZjg2MjZiZjM0MGI4YjNiZGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIGNs
YXNzIEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGYwOGZl
M2QwMmI5OWM4MzNiNTUxNzNlYjU0MDg0YzFlMjA0MzUwZmIuLjA0YjA4ZjRkMTg5NTkyYjMyMThk
NzJlNzM0YWM3MWU5ZWNkZjE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDgsMTQgKzEwOCwxNCBAQCB2
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogY2VsbCwgRXhlY1N0YXRlKgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5LCBtb2RlKTsK
IH0KIAotdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVu
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAg
Ly8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNNb2R1bGVSZWNv
cmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5y
ZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaAppbmRleCBmN2VmYTYyNjNiMmIyNzQ5Zjc4OGMwYTdmMDczZjc2NzdhMDA5YjAzLi40MzRi
YjdjM2Y4YTIxYWViOGQ5ZWY1OWMyMmFmZTFiMDQ2NWYzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC03Nyw3ICs3
Nyw3IEBAIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJv
bm1lbnQgewogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAppbmRleCAwZmU5YzMyNjZmYWNhODc0ODJlMDJhMWZhYzZiYWE5YzMzMDlk
Yjg3Li40MGRkYTczMzNmZjcyMGFkZjYwOThmZjQ3NzU3MmYxZWIxODZhZWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCkBAIC0xNTEsMTcgKzE1MSwxOSBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVj
ZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggMzdlNjQyZTg3NGE0NmQxM2Y0NjVlMWE3
ZDdjN2RlNDFjZjdiMjdkMS4uOGNmZWNmZDBhNDViNTA0ZTZlYWU3NDc5YjUzZDExOGY0NzI2Njc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oCkBAIC00Niw4ICs0Niw4IEBAIGNsYXNzIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB9CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCAxY2M0OTM3NWQ0ZjJjZjJlYzdlMmUwMWJiYTdi
YjhhOTE0N2Y4NGZmLi43YjdiMzIzZTk4YTkxYTE5ODJhYWMwNTYzNmMxYWE5ZDk3ODFkMjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CkBAIC03ODYsNyArNzg2LDggQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgICAg
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVs
ZS0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBpbXBvcnRF
bnRyeS5sb2NhbE5hbWUsIG5hbWVzcGFjZU9iamVjdCwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKKyAgICAgICAg
ICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dFRv
dWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgaW1wb3J0RW50cnkubG9j
YWxOYW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBm
YWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVk
TW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwogICAg
ICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKQEAgLTgxNiw4ICs4MTcsMTAgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBl
eGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDog
bV9kZWNsYXJlZFZhcmlhYmxlcykgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOwogICAgICAgICBWYXJPZmZzZXQg
b2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7Ci0gICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2so
KSkKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5n
ZXQoKSksIGpzVW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxz
ZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CisgICAgICAgIGlmICghb2Zmc2V0
LmlzU3RhY2soKSkgeworICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50
LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpz
VW5kZWZpbmVkKCksIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdu
b3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSwgcHV0UmVzdWx0KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KQEAgLTgzNyw3ICs4NDAsOCBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgc3ltYm9s
VGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCAvKiBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOwor
ICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgLyogc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRS
ZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKaW5kZXggMmU4ZjcxZWY5M2JmMDlkZGIzODVmMjZkYTM3ZGRjZWYwOWE1
YWUzYy4uYmYwZjc2NzdlZTVlMWNjZjQ4MmI2YzE2NjVlZTkyNTY2ZGY1MzM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNjUsNiArNjUsNyBAQAog
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTRmluYWxPYmplY3QpOwog
CiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IgPSAiQXR0
ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iOworY29uc3QgY2hhciogVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yID0gIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiI7CiAKIGNvbnN0IENsYXNzSW5mbyBKU09iamVjdDo6c19pbmZvID0geyAiT2JqZWN0Iiwg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU09iamVjdCkgfTsKIApAQCAtNDE3LDEyICs0MTgs
MTIgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
dGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogfQogCiAvLyBFQ01BIDguNi4yLjIKLXZvaWQg
SlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgIHJldHVybiBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKQEAgLTQzNSwyMyArNDM2LDIzIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBK
U1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5p
c0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FsbFNldHRlcihleGVjLCB0aGlz
LCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGV4ZWMsIHRo
aXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnko
KSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZz
ZXQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0
dGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjYWxsQ3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBhdHRy
aWJ1dGVzICYgQ3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywg
YXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yKQogICAg
ICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwganNDYXN0PEN1c3Rv
bUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShvYmosIGpzQ2Fz
dDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCkBA
IC00NjEsMTAgKzQ2Miw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFvYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkgewogICAgICAgICAgICAg
aWYgKG9iai0+Y2xhc3NJbmZvKCktPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVz
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dEVudHJ5
KGV4ZWMsIGVudHJ5LCBvYmosIHRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeSwg
b2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHBy
b3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKQEAgLTQ3
Miw4ICs0NzEsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9yLgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAx
MgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4o
b2JqKTsKLSAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVs
bCgpKQpAQCAtNDgyLDE4ICs0ODAsMjEgQEAgdm9pZCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVy
Y2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpcyk7Ci0g
ICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOworICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKSB7CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1l
ID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGws
IHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFs
dWUsIHNsb3QpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIAogICAgIHN3aXRjaCAo
dGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTUwMywxNSArNTA0LDEzIEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
IHsKICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZt
KCksIHZhbHVlKTsKICAgICAgICAgLy8gUmVsb29wLgotICAgICAgICBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9J
TkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgewogICAgICAg
ICAgICAgdGhpc09iamVjdC0+Y29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUp
OwotICAgICAgICAgICAgcHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
cHV0QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgfQpAQCAtNTIzLDIyICs1MjIs
MjAgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3Vv
dXMoKVtwcm9wZXJ0eU5hbWVdLnNldChleGVjLT52bSgpLCB0aGlzT2JqZWN0LCB2YWx1ZSk7CiAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAg
ICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKHByb3BlcnR5TmFtZSArIDEpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdW1iZXIoKSkgewogICAgICAgICAgICAgdGhpc09iamVjdC0+Y29udmVydERvdWJsZVRvQ29u
dGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAgIC8vIFJlbG9vcC4KLSAgICAgICAgICAg
IHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAg
ICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAg
aWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkgewogICAgICAgICAgICAgdGhpc09i
amVjdC0+Y29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKICAgICAgICAgICAg
IC8vIFJlbG9vcC4KLSAgICAgICAgICAgIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwogICAgICAgICB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
c09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPj0gYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkKQEAgLTU0Niw3ICs1NDMsNyBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsCiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW3Byb3BlcnR5TmFt
ZV0gPSB2YWx1ZUFzRG91YmxlOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChwcm9wZXJ0eU5hbWUgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgpA
QCAtNTY4LDcgKzU2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICsr
c3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgCiAgICAgICAgIHZhbHVlU2xv
dC5zZXQoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgdmFsdWUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOb25BcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlOgpAQCAtNTgzLDI2ICs1ODAsMjggQEAgdm9pZCBKU09iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLAogICAgICAgICAKICAgICAgICAgLy8gVXBkYXRlIGxlbmd0aCAmIG1fbnVtVmFs
dWVzSW5WZWN0b3IgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGxl
bmd0aCkgewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0dGVtcHRUb0ludGVyY2VwdFB1
dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdywgcHV0UmVz
dWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgbGVu
Z3RoID0gcHJvcGVydHlOYW1lICsgMTsKICAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChs
ZW5ndGgpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAg
ICAgICB9IGVsc2UgaWYgKCF2YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmF0
dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT52bSgpLCB0aGlzT2Jq
ZWN0LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0aGlzT2JqZWN0LT5wdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhp
c3RzKFZNJiB2bSwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQpAQCAtMTI5Miw3ICsxMjkxLDcgQEAg
Ym9vbCBKU09iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+YWxsb3dzQWNjZXNz
RnJvbShnbG9iYWxPYmplY3QsIGV4ZWMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGdldHRl
ciwgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0dGVyLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwog
ICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldHRlcik7CkBAIC0xMzAzLDEwICsxMzAyLDEwIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgZ2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVt
KSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5l
T3duUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7
CisgICAgcmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXRTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHNldHRlciwgdW5z
aWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRl
c2NyaXB0b3Iuc2V0U2V0dGVyKHNldHRlcik7CkBAIC0xMzE3LDI3ICsxMzE2LDI1IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgc2V0CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIERvbnRFbnVtKSkKICAg
ICAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogCi0gICAgZGVmaW5lT3duUHJv
cGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAg
cmV0dXJuIGRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgZmFsc2UpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkg
JiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXREaXJlY3RJ
bmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICBwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwor
ICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RD
dXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0
b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgcHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBzbG90KTsKIAogICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0
eVNsb3Q6Ok5ld1Byb3BlcnR5KTsKIApAQCAtMTM0NSwxOCArMTM0MiwyMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdQogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgIHN0
cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICBzdHJ1Y3R1cmUt
PnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVjayhwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSh2bSk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgc3Ry
dWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogCiAgICAgc3RydWN0dXJl
LT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2socHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogLy8gSGFzUHJvcGVydHkoTywgUCkgZnJvbSBTZWN0aW9uIDcuMy4xMCBvZiB0aGUg
c3BlYy4KQEAgLTE4ODgsNyArMTg4Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0Ojpm
aWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBnCiAgICAg
c2xvdC5zZXRDYWNoZWFibGVHZXR0ZXJTbG90KHRoaXMsIGF0dHJpYnV0ZXMsIGpzQ2FzdDxHZXR0
ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVu
dHJ5SW5NYXAsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQorYm9vbCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xk
RGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gbWFwID0g
bV9idXR0ZXJmbHkuZ2V0KHRoaXMpLT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7
CkBAIC0xODk5LDcgKzE4OTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYQogICAgICAgICBl
bHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAgICAgICAgICAg
ICBlbnRyeUluTWFwLT5zZXQodm0sIG1hcCwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGVudHJ5
SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVu
dChvbGREZXNjcmlwdG9yKSAmIH5BY2Nlc3NvcjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpKSB7CkBAIC0xOTIyLDExICsxOTIxLDEyIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4
ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1h
CiAKICAgICAgICAgZW50cnlJbk1hcC0+c2V0KHZtLCBtYXAsIGFjY2Vzc29yKTsKICAgICAgICAg
ZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdD
dXJyZW50KG9sZERlc2NyaXB0b3IpICYgflJlYWRPbmx5OwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEFTU0VSVChkZXNjcmlwdG9yLmlzR2VuZXJp
Y0Rlc2NyaXB0b3IoKSk7CiAgICAgZW50cnlJbk1hcC0+YXR0cmlidXRlcyA9IGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KG9sZERlc2NyaXB0b3IpOworICAgIHJldHVybiB0
cnVlOwogfQogCiAvLyBEZWZpbmVkIGluIEVTNS4xIDguMTIuOQpAQCAtMjAxMSw3ICsyMDExLDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFAKICAgICAgICAgaWYgKGN1cnJlbnQuaXNEYXRhRGVz
Y3JpcHRvcigpICE9IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAgICAg
ICAvLyA5LmEuIFJlamVjdCwgaWYgdGhlIFtbQ29uZmlndXJhYmxlXV0gZmllbGQgb2YgY3VycmVu
dCBpcyBmYWxzZS4KICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJvd0V4Y2Vw
dGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKTsK
ICAgICAgICAgICAgIC8vIDkuYi4gSWYgSXNEYXRhRGVzY3JpcHRvcihjdXJyZW50KSBpcyB0cnVl
LCB0aGVuIGNvbnZlcnQgdGhlIHByb3BlcnR5IG5hbWVkIFAgb2Ygb2JqZWN0IE8gZnJvbSBhCiAg
ICAgICAgICAgICAvLyBkYXRhIHByb3BlcnR5IHRvIGFuIGFjY2Vzc29yIHByb3BlcnR5LiBQcmVz
ZXJ2ZSB0aGUgZXhpc3RpbmcgdmFsdWVzIG9mIHRoZSBjb252ZXJ0ZWQgcHJvcGVydHkncwogICAg
ICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXSBhbmQgW1tFbnVtZXJhYmxlXV0gYXR0cmlidXRl
cyBhbmQgc2V0IHRoZSByZXN0IG9mIHRoZSBwcm9wZXJ0eSdzIGF0dHJpYnV0ZXMgdG8KQEAgLTIw
NjUsNyArMjA2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgp
CiAgICAgICAgIGFycmF5U3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0
UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhp
c1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29s
JiBwdXRSZXN1bHQpCiB7CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsK
ICAgICAgICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHBy
b3RvdHlwZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CkBAIC0yMDc3LDE0ICsyMDc3LDE0
IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGlmIChzdG9yYWdlICYmIHN0b3Jh
Z2UtPm1fc3BhcnNlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVy
YXRvciBpdGVyID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBp
ZiAoaXRlciAhPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC0+bm90Rm91bmQoKSAmJiAoaXRlci0+dmFs
dWUuYXR0cmlidXRlcyAmIChBY2Nlc3NvciB8IFJlYWRPbmx5KSkpIHsKLSAgICAgICAgICAgICAg
ICBpdGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5n
ZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgICAgICBwdXRSZXN1bHQgPSBp
dGVyLT52YWx1ZS5wdXQoZXhlYywgdGhpc1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQo
KSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50LT50eXBlKCkgPT0g
UHJveHlPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nh
c3Q8UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHByb3h5LT5wdXRCeUluZGV4
Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAg
ICAgIHB1dFJlc3VsdCA9IHByb3h5LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNWYWx1ZSwg
aSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMjA5NiwxNyArMjA5NiwxNyBAQCBib29sIEpTT2JqZWN0OjphdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSgogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCitib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUlu
ZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEpTVmFsdWUgcHJvdG90eXBl
VmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gYXNPYmplY3Qo
cHJvdG90eXBlVmFsdWUpLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIGFz
T2JqZWN0KHByb3RvdHlwZVZhbHVlKS0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9s
ZUZvclByb3RvdHlwZShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3Vs
dCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK2Jvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKChpbmRleGluZ1R5
cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NFUlQo
IWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC0yMTIwLDE2ICsyMTIwLDE1IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhF
eGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICBp
ZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAotICAgICAgICB8fCAoaSA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYCi0gICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihp
LCBjb3VudEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQorICAgICAgICB8fCAo
aSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGks
IGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAgIHx8IGlu
ZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsK
ICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CiAgICAgICAgIFNwYXJzZUFycmF5
VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAgICAgICBtYXAt
PnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgZmFsc2UpOwogICAgICAg
ICBBU1NFUlQoaSA+PSBhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkpOwogICAgICAgICBhcnJheVN0
b3JhZ2UoKS0+c2V0TGVuZ3RoKGkgKyAxKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGVuc3VyZUxlbmd0aCh2bSwgaSArIDEpOwpAQCAtMjE0
MCwzMSArMjEzOSwzMiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogICAgIGNhc2UgSW50MzJT
aGFwZToKICAgICAgICAgQVNTRVJUKHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAgIGJ1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKClbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBE
b3VibGVTaGFwZTogewogICAgICAgICBBU1NFUlQodmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgICAg
IGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgQVNTRVJU
KHZhbHVlQXNEb3VibGUgPT0gdmFsdWVBc0RvdWJsZSk7CiAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWVBc0RvdWJsZTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDb250aWd1b3VzU2hh
cGU6CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwgdGhpcywgdmFs
dWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiB9CiAKIC8vIEV4cGxpY2l0IGluc3RhbnRpYXRpb25zIG5lZWRlZCBieSBKU0FycmF5LmNwcC4K
LXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7
Ci10ZW1wbGF0ZSB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0
aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVl
KTsKLXRlbXBsYXRlIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihFeGVjU3RhdGUqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7Cit0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKK3RlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKIAotdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCitib29s
IEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3csIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
CkBAIC0yMTkxLDEyICsyMTkxLDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAg
ICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8sIG9yIGNhbid0
IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBhIHNwYXJzZSBt
YXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFw
KGV4ZWMtPnZtKCkpOwotICAgICAgICBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1hcC0+cHV0
RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKICAgICAv
LyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjIwNiw3ICsyMjA1LDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgp
IHx8ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRo
cm93KQogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAgICAg
ICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjIxNSwxMCArMjIxNCw4IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1h
cCAtIGNoZWNrIHdoZXRoZXIgd2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4KICAgICAvLyBX
ZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMgc2V0
LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxzLgog
ICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yICsgbWFwLT5zaXplKCk7Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNl
RW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVj
dG9yTGVuZ3RoKGV4ZWMtPnZtKCksIGxlbmd0aCkpIHsKLSAgICAgICAgbWFwLT5wdXRFbnRyeShl
eGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3Rvcihs
ZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52
bSgpLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogCiAgICAgLy8gUmVyZWFkIG1fc3RvcmFnZSBhZnRlciBp
bmNyZWFzZVZlY3Rvckxlbmd0aCwgdXBkYXRlIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgc3Rv
cmFnZSA9IGFycmF5U3RvcmFnZSgpOwpAQCAtMjIzNiw5ICsyMjMzLDEwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zCiAgICAgaWYgKCF2YWx1ZVNsb3QpCiAgICAgICAgICsrc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICB2YWx1ZVNsb3Quc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQorYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMjI0OCwyNSArMjI0Niwy
MiBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7Ci0gICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVj
LCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9y
YWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7Ci0gICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhJc1N1ZmZpY2llbnRseUJleW9u
ZExlbmd0aEZvclNwYXJzZU1hcChpLCAwKSB8fCBpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgp
IHsKLSAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAorICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmco
KSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0aGUgU2xv
d1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCiAgICAgICAgICAgICBjcmVhdGVBcnJheVN0b3Jh
Z2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKLSAgICAgICAg
ICAgIHB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpcywgZXhlYywg
aSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY3Jl
YXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzogewpAQCAtMjI3NCwzOCArMjI2OSwzMyBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaSwgSlNWYWx1ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxJbnQzMlNoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIAotICAgIGNhc2UgQUxM
X0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoK
KyAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmli
dXRlczxEb3VibGVTaGFwZT4oZXhlYywgaSwgdmFsdWUpOwogICAgICAgICAKLSAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGksIHZh
bHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBpLCB2YWx1ZSk7CiAgICAg
ICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAgICAgICAgLy8gTm8gb3duIHByb3Bl
cnR5IHByZXNlbnQgaW4gdGhlIHZlY3RvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIGluIHRoZSBzcGFy
c2UgbWFwIQogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhcnJheVN0b3JhZ2Uo
KS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5z
KGkpKSAmJiBhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVl
LCBzaG91bGRUaHJvdykpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgICAgIGlmICghKG1hcCAmJiBtYXAtPmNvbnRhaW5zKGkpKSAmJiBh
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIGksIHZhbHVlLCBzaG91bGRU
aHJvdywgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIH0KIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
OgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhy
b3csIGFycmF5U3RvcmFnZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGFycmF5U3RvcmFnZSgpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9kZSwgQXJyYXlT
dG9yYWdlKiBzdG9yYWdlKQpAQCAtMjQ3OSwxNSArMjQ2OSwxNSBAQCBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVgogICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmlu
c2ljR2V0dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
ciBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcykKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3Nv
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIG5h
bWUuc3RyaW5nKCksIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMpOwogICAgIGFjY2Vzc29yLT5z
ZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3Iodm0sIG5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4g
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMp
OwogfQogCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAgaWYgKCFuYW1lKQpAQCAtMjQ5NSw3ICsyNDg1
LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBBU1NFUlQobmFtZSk7CiAKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbkxlbmd0aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7Ci0gICAg
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKKyAgICBy
ZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
IH0KIAogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKQEAgLTI4MDYsMTIgKzI3OTYsMTEgQEAgc3RhdGljIGJvb2wgcHV0RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBw
cm9wZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TWF5
QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUpCitib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQot
ICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAg
ZWxzZQotICAgICAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KTsKIH0KIAogY2xhc3MgRGVmaW5lT3duUHJvcGVydHlTY29wZSB7CkBAIC0yODkyLDcgKzI4ODEs
NyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURl
c2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2Vz
cyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CisgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNo
YW5pc21FcnJvcikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBA
IC0yOTQ0LDcgKzI5MzMsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgICAgICB9CiAg
ICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAg
ICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCA0M2I5OTA2MmU4NWQ3NTk3MTA0NDZlN2I4ODliMmViNTdmZjczNjU5
Li4yNDhhNDg3MmU4Y2RlZDU4NTBmOWRkZDc3ZTFmOWIzNDc0ZGNiN2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTcxLDYgKzcxLDcgQEAgaW5saW5lIEpT
Q2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogCiBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBleHRl
cm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3I7CitleHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3I7CiAKIENPTVBJTEVfQVNTRVJUKE5v
bmUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlLCBOb25lX2lzX2JlbG93X0ZpcnN0SW50ZXJuYWxB
dHRyaWJ1dGUpOwogQ09NUElMRV9BU1NFUlQoUmVhZE9ubHkgPCBGaXJzdEludGVybmFsQXR0cmli
dXRlLCBSZWFkT25seV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlKTsKQEAgLTE3MSwx
OCArMTcyLDE4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS5nZXQodGhpcyktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgdm9pZCBwdXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJbmxp
bmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlJbmRleElubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKICAgICB7CiAgICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAg
ICByZXR1cm4gbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAg
Ly8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0yMDQsNyAr
MjA1LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICAv
LyBBIG5vbi10aHJvd2luZyB2ZXJzaW9uIG9mIHB1dERpcmVjdCBhbmQgcHV0RGlyZWN0SW5kZXgu
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAg
ICAgICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAogICAgIHsKQEAgLTQ5
NywxNSArNDk4LDE1IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8g
IC0gYWNjZXNzb3JzIGFyZSBub3QgY2FsbGVkLgogICAgIC8vICAtIGF0dHJpYnV0ZXMgd2lsbCBi
ZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdpdGgg
dGhlIGdpdmVuIGF0dHJpYnV0ZXMpCiAgICAgLy8gIC0gdGhlIHByb3BlcnR5IG5hbWUgaXMgYXNz
dW1lZCB0byBub3QgYmUgYW4gaW5kZXguCi0gICAgdm9pZCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAgICB2b2lkIHB1dERp
cmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
Ym9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwKTsKKyAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwot
ICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgdm9pZCBwdXRHZXR0ZXIoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAg
ICB2b2lkIHB1dFNldHRlcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgIGJvb2wgcHV0R2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgYm9vbCBwdXRTZXR0ZXIo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC02MzEsOCArNjMy
LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHB1dERpcmVj
dChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0
RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwdXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElk
ZW50aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9u
TGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRl
cihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVy
dHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rp
b24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtNzAzLDcg
KzcwNCw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXMgZXF1
aXZhbGVudCB0bzoKICAgICAvLwogICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZSguLi4pOwotICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBib29sIGF0dGVt
cHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KTsKICAgICAgICAgCiAgICAgLy8gUmV0dXJucyAwIGlm
IGludDMyIHN0b3JhZ2UgY2Fubm90IGJlIGNyZWF0ZWQgLSBlaXRoZXIgYmVjYXVzZQogICAgIC8v
IGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2UsIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLCBvciBi
ZWNhdXNlCkBAIC04NDksOCArODUwLDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsK
IAogICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotICAgIHZvaWQgcHV0
QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgdm9pZCBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOworICAgIGJv
b2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgYm9vbCBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSopOwog
CiAgICAgYm9vbCBpbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVkIG5ld0xlbmd0aCk7
CiAgICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsKQEAgLTg1OSw3ICs4NjAsNyBA
QCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAKICAgICB2b2lkIG5v
dGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CiAgICAgICAgIAotICAgIGJvb2wg
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bmRleCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgYm9vbCBhdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwogICAgICAgICAKICAgICAvLyBD
YWxsIHRoaXMgaWYgeW91IHdhbnQgc2V0SW5kZXhRdWlja2x5IHRvIHN1Y2NlZWQgYW5kIHlvdSdy
ZSBzdXJlIHRoYXQKICAgICAvLyB0aGUgYXJyYXkgaXMgY29udGlndW91cy4KQEAgLTkwNCw3ICs5
MDUsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0RGly
ZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoRXhlY1N0
YXRlKiBleGVjLCBWTSYsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBO
RVZFUl9JTkxJTkUgdm9pZCBwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJf
SU5MSU5FIGJvb2wgcHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwpAQCAtOTEzLDkgKzkxNCw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBIYXNoVGFibGVWYWx1ZSog
ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIAotICAg
IHZvaWQgcHV0SW5kZXhlZERlc2NyaXB0b3IoRXhlY1N0YXRlKiwgU3BhcnNlQXJyYXlFbnRyeSos
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIFByb3BlcnR5RGVzY3JpcHRvciYgb2xkKTsKKyAg
ICBib29sIHB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIFNwYXJzZUFycmF5RW50cnkq
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZCk7CiAg
ICAgICAgIAotICAgIHZvaWQgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGly
ZWN0SW5kZXhNb2RlLCBBcnJheVN0b3JhZ2UqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhN
b2RlKTsKICAgICAgICAgCkBAIC0xNDY4LDE5ICsxNDY5LDE5IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShh
dHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVy
U2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVl
LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAg
IHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggZjNkMmI4MjhjM2Yw
OTM4NTIzMjRkNWY2OTFlMGM4NThhMjQ2M2UxMy4uMjEwNDQxNzE0ZWE2Nzk5MWYzNzc2NzczMDIy
NWIxNWFmOWU2NDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHIK
IH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnB1dElu
bGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGNlbGwpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02MiwxOCArNjIsMTkgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmEKICAgICAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMg
aXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1l
cyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sg
aW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBwdXRCeUluZGV4
KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1cm4gcHV0QnlJ
bmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUo
ZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0o
KSwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpCi0gICAg
ICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBz
bG90KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdGhpc09iamVjdC0+
cHV0SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CmluZGV4IDQwZDMxZmQ2ZTJlYzFkZWRkZmExODI0MDY3NWFhZThmM2U4M2RlMzcuLjE5M2RmZTU3
ZGNmZDVmMDNjMWQ3MDA1YTUwYjIwOWZjN2ZjYjY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC03OCwxNiArNzgsMTYgQEAgYm9vbCBKU1Byb3h5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWcKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi12b2lkIEpTUHJveHk6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU1Byb3h5OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU1Byb3h5Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIEpTUHJveHk6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUlu
ZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMmJkY2QxYjcyYWJjZWJhODdm
ZmIwNmU3NGZlMTZiNjMyNzNkODEyNC4uNTcwOTIxYmUxOGM4MTY3ZjljN2ZkNTY2NmFmYjgwYjli
YmFlZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtNzYs
OCArNzYsOCBAQCBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09i
amVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCAzNjhjZWRjYjgwYjNhNzRiYjVhYzIzNmY3NmFi
YWI4MWUyOTU5MGJmLi5kNDRjZGUwMzY0Yzk3ZDhkZjVkYmNkOTJjMzg4ZGQxYTRmNTdjOGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1vZGUg
ewogdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlwZW5h
bWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAg
ICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywK
LSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycywgV2F0Y2hwb2ludFNldComIHNldCkKKyAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgV2F0Y2hwb2ludFNldComIHNldCwgYm9v
bCYgcHV0UmVzdWx0KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICBpZiAoZmFzdEVudHJ5LmlzUmVh
ZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHB1
dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApA
QCAtMTg4LDE3ICsxODksMTggQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgLy8g
dGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRv
bid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWct
PnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgcHV0UmVzdWx0ID0gdHJ1ZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgog
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoCiAgICAgU3ltYm9s
VGFibGVPYmplY3RUeXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKLSAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycykKKyAgICBib29sIHNob3VsZFRocm93UmVh
ZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQog
ewogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlcyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1
dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlF
cnJvcnMsIHNldCk7CisgICAgYm9vbCByZXN1bHQgPSBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJs
ZVB1dE1vZGU6OldpdGhvdXRBdHRyaWJ1dGVzPihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9u
bHlFcnJvcnMsIHNldCwgcHV0UmVzdWx0KTsKICAgICBpZiAoc2V0KQogICAgICAgICBWYXJpYWJs
ZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTIwNywxMSArMjA5LDExIEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2lu
dFNldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAotICAgIGJvb2wgc2hv
dWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzKQorICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBi
b29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRhYmxl
UHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0KTsKKyAgICBib29sIHJlc3VsdCA9IHN5bWJvbFRh
YmxlUHV0PFN5bWJvbFRhYmxlUHV0TW9kZTo6V2l0aG91dEF0dHJpYnV0ZXM+KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2hvdWxkVGhyb3dSZWFkT25seUVy
cm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgc2V0LCBwdXRSZXN1bHQpOwogICAgIGlmIChzZXQp
CiAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3Qs
IHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0
aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTIyMCwxMiArMjIyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0
SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9i
amVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzVG91Y2hX
YXRjaHBvaW50U2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCi0gICAgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0
cjsKICAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciA9IGZhbHNlOwogICAgIGJvb2wg
aWdub3JlUmVhZE9ubHlFcnJvcnMgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFi
bGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQpOworICAgIGJvb2wgcmVzdWx0ID0gc3ltYm9sVGFi
bGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpXaXRoQXR0cmlidXRlcz4ob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3Is
IGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBzZXQsIHB1dFJlc3VsdCk7CiAgICAgaWYgKHNldCkKICAg
ICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCmluZGV4IDBiZjlkMmU5YjUwZmYyMjM0NjQ2NjQ2MWQ4NTliZTgzODI1OThhYWYuLjY3
MzIzOTQ1YzU5MDE2YjczMTc2ODU2ZjAzY2M1NzQwMmNhYTBhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0yODQsMjcgKzI4NCw0MCBAQCBpbmxpbmUgYm9vbCBn
ZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxl
LCBUaGlzSW1wKgogLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVy
dHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2Fz
IGNhbGxlZCBvbikuCiAvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJl
aW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQp
LgogLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2lu
YWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNl
bGYpLgotaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBKU09iamVjdCogdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCitpbmxpbmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7
CiAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKICAgICAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJv
cGVydHkuCiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
LSAgICB9IGVsc2UgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBB
Y2Nlc3NvcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7Ci0gICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBSZWFkT25seSkpIHsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yOwogICAgICAgICBKU1ZhbHVlIHVwZGF0ZVRoaXNW
YWx1ZSA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBDdXN0b21BY2Nlc3NvciA/IHNsb3QudGhpc1Zh
bHVlKCkgOiBKU1ZhbHVlKGJhc2UpOwotICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShl
eGVjLCBKU1ZhbHVlOjplbmNvZGUodXBkYXRlVGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKSk7Ci0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ip
CisgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihleGVjLCBlbnRyeS0+cHJv
cGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3NvciwgdXBkYXRlVGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAg
ICAgIGlmIChpc0FjY2Vzc29yKQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3Nvcihi
YXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tVmFsdWUoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAg
IH0gZWxzZSBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMzEyLDE0ICszMjUsMTQgQEAgaW5saW5lIHZvaWQg
cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpT
T2JqZWN0KiBiYXMKICAqIEl0IGxvb2tzIHVwIGEgaGFzaCBlbnRyeSBmb3IgdGhlIHByb3BlcnR5
IHRvIGJlIHNldC4gIElmIGFuIGVudHJ5CiAgKiBpcyBmb3VuZCBpdCBzZXRzIHRoZSB2YWx1ZSBh
bmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFsc2UuCiAgKi8KLWlubGluZSBib29s
IGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBw
dXRSZXN1bHQpCiB7CiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gdGFibGUuZW50
cnkocHJvcGVydHlOYW1lKTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBiYXNlLCBiYXNlLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBwdXRFbnRyeShleGVjLCBlbnRyeSwgYmFz
ZSwgYmFzZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRl
eCBhM2VkZTU5NzYzNjIxMmIyY2U0MjQ0ZDBiZmQwM2FlMzE4YjhlNDlkLi4yZDU3MjYwOTlmMTJl
NmRkODk4NTZhNTgxNDllYmUxMjM5MzY4NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCBib29sIFByb3h5
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgdQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGVyZm9ybURlZmF1bHRQdXRG
dW5jdGlvbj4KLXZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKK2Jvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURl
ZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkKQEAgLTM3Niw3
ICszNzYsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIEpTVmFsdWUgaGFuZGxlclZh
bHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0
Kj4oaGFuZGxlclZhbHVlKTsKQEAgLTM4NCwxMiArMzg0LDEwIEBAIHZvaWQgUHJveHlPYmplY3Q6
OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRo
aXNWYWx1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlLiIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBwZXJmb3Jt
RGVmYXVsdFB1dCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM5OCw2MiArMzk2LDYxIEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgc2V0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHRyYXBSZXN1
bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghdHJhcFJlc3VsdEFzQm9vbCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFy
Z2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAg
ICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBwdXRWYWx1
ZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdy
aXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9y
IGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnLiIpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJs
ZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Uu
IikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb3h5T2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgUHJveHlPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKQorICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogCiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3Qq
PihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAg
SlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QtPnRhcmdldCgp
KTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RU
YWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
ICAgIH07Ci0gICAgdGhpc09iamVjdC0+cGVyZm9ybVB1dChleGVjLCB2YWx1ZSwgc2xvdC50aGlz
VmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnBlcmZvcm1QdXQoZXhlYywgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHByb3Bl
cnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCi12b2lkIFByb3h5T2JqZWN0OjpwdXRC
eUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKTsgCiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgpIHsKICAgICAgICAgSlNPYmpl
Y3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9
IHNob3VsZFRocm93OwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlz
U3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhl
IHB1dEJ5SW5kZXguCi0gICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0
LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHRh
cmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1
dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAgIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRo
aXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CisgICAgcmV0dXJuIHBl
cmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3Jt
RGVmYXVsdFB1dCk7CiB9CiAKLXZvaWQgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhD
b21tb24oZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRCeUluZGV4Q29tbW9uKGV4ZWMsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAzMTc1
MmI4YWE4N2NlMTBmMjNmOTJhNmExYjQ5MzNlZGY3YmE4ODBkLi42ZDExYWJmZGYxYWU2NTE0OTJl
NDlmOTlkOWE1NjdhN2EwZDc4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmgKQEAgLTY1LDkgKzY1LDkgQEAgY2xhc3MgUHJveHlPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNPYmplY3QqIHRhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgSlNWYWx1ZSBoYW5kbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGVyLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdm9pZCBwdXRCeUluZGV4
Q29tbW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBib29sIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSopOwogICAgIHZvaWQg
cmV2b2tlKFZNJik7CiAgICAgYm9vbCBpc1Jldm9rZWQoKSBjb25zdDsKQEAgLTEwMCw3ICsxMDAs
NyBAQCBjbGFzcyBQcm94eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uPgogICAgIGJvb2wgcGVyZm9y
bURlbGV0ZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbik7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+Ci0gICAg
dm9pZCBwZXJmb3JtUHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24pOworICAgIGJv
b2wgcGVyZm9ybVB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uKTsKICAgICBib29s
IHBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqKTsKICAgICBib29sIHBlcmZvcm1J
c0V4dGVuc2libGUoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBwZXJmb3JtRGVmaW5lT3duUHJvcGVy
dHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0
UHJvcGVydHlTbG90LmgKaW5kZXggOTBjNTdiZTkwZjhhMWE0ZGJkNmU0MzM1MGI1YmM2N2ZlMzY0
MWFjYy4uMTNhZDJkMzdhZThhMTBkZWE5ZmM3OWFmNGY5MzFjNGQyZWQyNTdjMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUg
eyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJvcGVy
dHksIEN1c3RvbVZhbHVlLCBDdXN0b21BY2Nlc3NvciB9OwogICAgIGVudW0gQ29udGV4dCB7IFVu
a25vd25Db250ZXh0LCBQdXRCeUlkLCBQdXRCeUlkRXZhbCB9OwotICAgIHR5cGVkZWYgdm9pZCAo
KlB1dFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdmFsdWUpOworICAgIHR5cGVkZWYgYm9vbCAoKlB1dFZhbHVlRnVuYykoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
OwogCiAgICAgUHV0UHJvcGVydHlTbG90KEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzU3RyaWN0
TW9kZSA9IGZhbHNlLCBDb250ZXh0IGNvbnRleHQgPSBVbmtub3duQ29udGV4dCwgYm9vbCBpc0lu
aXRpYWxpemF0aW9uID0gZmFsc2UpCiAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDg5
NGFhZmE0Njk2OGU2MDMyYWZkOWRkOGJiZDc1YjI5ODE3OTA3OWQuLmM2ZDU3YjMxNzA5NDllZGE0
YjM5NGM5NmVmNzVlOGJlOTc4NDdlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC00Myw2ICs0Myw3IEBACiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93
bktleXMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFByb3RvdHlw
ZU9mKEV4ZWNTdGF0ZSopOwogCiB9CkBAIC02OSw2ICs3MCw3IEBACiAgICAgaXNFeHRlbnNpYmxl
ICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICByZWZsZWN0T2JqZWN0
T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwcmV2ZW50
RXh0ZW5zaW9ucyAgICAgICAgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgc2V0ICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RP
YmplY3RTZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIHNl
dFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCkBAIC0yMzQsNiArMjM2LDI4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25z
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVm
bGVjdC5zZXQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgSlNPYmplY3Qq
IHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworCisgICAgSlNWYWx1ZSByZWNlaXZlciA9IHRhcmdldDsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDQpCisgICAgICAgIHJlY2VpdmVyID0gZXhlYy0+YXJndW1lbnQo
Myk7CisKKyAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBl
biBpbiBzdHJpY3QgbW9kZS4KKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBpc1N0cmljdE1vZGUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1l
bnQoMiksIHNsb3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCA5N2JkZTFiNzQxYzZkYzUyMWI2NTg4NWVlNzJhZjZjOWJjM2U2YWNhLi4yNGYwOGQyYjhjMjFl
MGE2YzQ3ODk5OGY4YWZiMjY1ZDc2NGZhMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC00Nyw4ICs0Nyw4IEBACiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyOShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKIAotc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotc3RhdGljIHZvaWQgc2V0UmVn
RXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK3N0YXRpYyBib29sIHNldFJl
Z0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC0yMzQsMTYgKzIzNCwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNS
ZWdFeHBDb25zdHJ1Y3RvcihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPmdldFJpZ2h0Q29u
dGV4dChleGVjKSk7CiB9CiAKLXZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
Citib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRv
IGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpIHsK
ICAgICAgICAgY29uc3RydWN0b3ItPnNldElucHV0KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1
ZSkudG9TdHJpbmcoZXhlYykpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKK2Jvb2wgc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewotICAgIGlm
IChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpz
RHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSkpIHsKICAgICAgICAgY29uc3RydWN0b3ItPnNldE11bHRpbGluZShKU1ZhbHVlOjpkZWNvZGUo
dmFsdWUpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVjdHVy
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
bmV3VGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKaW5kZXggNTRjYWE2Y2MzNjM1ZWRkNDc1YmU1ZTc4Y2FjYWMwNjQ2ZDFiZjJkMi4uZDM5
ZjFmZmY4MTZlMzFjZTE4YjFmMDZmNDcyMDZlY2MzYTAwZTVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
Ym9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJs
ZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKICAgICAgICAgICAgIHJldHVy
biByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFu
Z2VBY2Nlc3NNZWNoYW5pc21FcnJvcik7CiAgICAgICAgIGlmICghcmVnRXhwLT5tX2xhc3RJbmRl
eElzV3JpdGFibGUpIHsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2Vu
dCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOwpAQCAtMTM4LDI2ICsxMzgsMjYg
QEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KTsKIH0KIAotc3RhdGljIHZvaWQgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKK3N0YXRpYyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgYXNSZWdFeHBPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0
SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGFz
UmVnRXhwT2JqZWN0KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4
ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIHRydWUpOwogfQogCi1zdGF0aWMgdm9pZCByZWdF
eHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGJvb2wgcmVnRXhw
T2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhc1JlZ0V4cE9iamVj
dChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSktPnNldExhc3RJbmRleChleGVjLCBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLCBmYWxzZSk7CisgICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSksIGZhbHNlKTsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgewotICAgICAgICBhc1JlZ0V4
cE9iamVjdChjZWxsKS0+c2V0TGFzdEluZGV4KGV4ZWMsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBhc1JlZ0V4cE9iamVjdChjZWxsKS0+c2V0TGFz
dEluZGV4KGV4ZWMsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgc2xvdC5z
ZXRDdXN0b21WYWx1ZShhc1JlZ0V4cE9iamVjdChjZWxsKSwgc2xvdC5pc1N0cmljdE1vZGUoKQog
ICAgICAgICAgICAgPyByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QKICAgICAgICAgICAg
IDogcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBCYXNlOjpwdXQoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIEJhc2U6OnB1dChjZWxsLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogSlNWYWx1ZSBSZWdFeHBPYmpl
Y3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cmluZyogc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAppbmRleCA2ZTcxNWQ1ZTdmOTdlMGE4MDBhNTYwNmRlNjEzNzIwMGE3OTZlY2RmLi5h
ODA0ZmQzODRlYWM5MzE2MWYyNDJhNjMyMmM0ZWZlYWIyY2Y2NTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFz
cyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBl
eGVjSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuY3BwCmluZGV4IDlhNWRhODM5NTdjMzI0ZThkYWY0MDI1ZGY0MTQ5NTJkODRjMDU3MzkuLmM4
ZTAwM2JmODU5ODI2MWI5MzYwZDdjYjZiNjFiOGI3YjcyZWE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIFN0cnVjdHVyZSogU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK2Jvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAKQEAgLTEwMiwxMCArMTAyLDEwIEBA
IHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYXJyYXksIHVuc2lnbmVkIGksCiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3Ip
OwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgZW50cnkucHV0KGV4
ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBlbnRyeS5w
dXQoZXhlYywgYXJyYXksIHRoaXMsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFy
cmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRE
aXJlY3RJbmRleE1vZGUgbW9kZSkKQEAgLTE0NiwyMCArMTQ2LDIwIEBAIHZvaWQgU3BhcnNlQXJy
YXlFbnRyeTo6Z2V0KFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoQmFzZTo6Z2V0KCksIGF0dHJpYnV0ZXMpOwogfQogCi12
b2lkIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCitib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgaWYgKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSkgewog
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkVGhyb3cpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHNldChleGVjLT52bSgp
LCBtYXAsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVl
LCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICByZXR1cm4g
Y2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhy
b3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CiB9CiAKIEpTVmFsdWUgU3BhcnNlQXJy
YXlFbnRyeTo6Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKaW5kZXggMDc1NGI1M2Q5ZDYw
MWRmMmFjZDdiY2FmMmU5NGFlZjZkMzM3ZGZhMi4uZjcxZGM5OTRlODk0YTcyODNhNTcyYjMzMjZj
OWU4NzYxYjkyMmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuaApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgU3BhcnNlQXJy
YXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogCiAgICAgdm9pZCBnZXQo
SlNPYmplY3QqLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKICAgICB2b2lkIGdldChQcm9wZXJ0eURl
c2NyaXB0b3ImKSBjb25zdDsKLSAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwor
ICAgIGJvb2wgcHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZh
bHVlTWFwKiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBnZXROb25T
cGFyc2VNb2RlKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIGNsYXNzIFNwYXJzZUFycmF5VmFsdWVNYXAgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIG1heSBtdXRhdGUgdGhlIGNvbnRlbnRz
IG9mIHRoZSBtYXAKLSAgICB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RW50cnkoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgYm9vbCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlKTsKICAgICBBZGRS
ZXN1bHQgYWRkKEpTT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIGl0ZXJhdG9yIGZpbmQodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggMmFiNDg2NzcyMjI2NjJiNWM5OWE2ZDZi
ZmEzZDgyZTU2MmE1ZmVkZS4uNjZmYjZmZjM4ZTM2ZjQxMThkYmI4MDI5NDNiMmEwZTYzZmYyYWY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRl
ICJSZWplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDI1ICs2MSwyNSBAQCBib29s
IFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAotdm9pZCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LXZvaWQgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCitib29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdP
YmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5H
ZXRJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCA5MGU2ZTVjY2E0NGFhMDY0NzQzNWEwYWFmN2JkMGIzY2Zk
ZjFkYTA5Li40Zjg5Njk3NDM5YzU2NWZmNTA2YzM5Y2Y5ZjBmN2I1ZmYxNzBlOTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggMmZhNDZiZWY4YjUyNTIyZGIw
ZDE2ZDc4NDcwYmFlYzM5ZjY1ZTZlZi4uODBiNTU0NzhhN2E0YTczM2JlZGFlMjBhNWIxZDVjYWUx
ZGY3ZTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTA3OSw3ICsx
MDc5LDcgQEAKIC0gcGF0aDogZXM2L1JlZmxlY3RfUmVmbGVjdC5jb25zdHJ1Y3Rfc2V0c19uZXcu
dGFyZ2V0X21ldGFfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvUmVmbGVjdF9SZWZsZWN0LnNldC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wubWF0Y2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wucmVwbGFjZV0uanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL25hbWVzcGFjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L25hbWVzcGFjZS5qcwppbmRleCA2Nzg5MjgyNjliY2IzNWY3NjJmY2MxZDJkMTRkNjNmMDQxODVk
Y2VkLi45NWMyMjgzMmM4YmVhODQ0MjliNzgyY2M4YWNhY2EyYmVkZTRkYjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLmpzCkBAIC0yNyw2
ICsyNywxMiBAQAogc2hvdWxkQmUobmFtZXNwYWNlLl9fcHJvdG9fXywgdW5kZWZpbmVkKTsKIHNo
b3VsZEJlKFJlZmxlY3QuaXNFeHRlbnNpYmxlKG5hbWVzcGFjZSksIGZhbHNlKTsKIAorc2hvdWxk
QmUoUmVmbGVjdC5zZXQobmFtZXNwYWNlLCAnRXh0ZW5kZWQnLCA0MiksIGZhbHNlKTsKK3Nob3Vs
ZEJlKCdFeHRlbmRlZCcgaW4gbmFtZXNwYWNlLCBmYWxzZSk7CisKK3Nob3VsZEJlKFJlZmxlY3Qu
c2V0KG5hbWVzcGFjZSwgNDIsIDQyKSwgZmFsc2UpOworc2hvdWxkQmUoNDIgaW4gbmFtZXNwYWNl
LCBmYWxzZSk7CisKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBuYW1lc3BhY2UudmFsdWUgPSAy
MDsKIH0sIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jl
ZmxlY3Qtc2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWZsZWN0
LXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMDlmN2NmNzc0MDhjZWRiMTBhNTM5ZGM3OWZkZDc1NTRmNjg0
NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9yZWZsZWN0LXNldC5qcwpAQCAtMCwwICsxLDkzMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJub3Qg
dGhyb3duLiIpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCitzaG91
bGRCZShSZWZsZWN0LnNldC5sZW5ndGgsIDMpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
UmVmbGVjdC5zZXQoImhlbGxvIiwgImhlbGxvIiwgNDIpOworfSwgYFR5cGVFcnJvcjogUmVmbGVj
dC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdGApOworCit2YXIg
c3ltYm9sID0gU3ltYm9sKCk7CisKKyhmdW5jdGlvbiByZWNlaXZlckNhc2UoKSB7CisgICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgcmVjZWl2ZXIgaXMgbm90IHN1cHBvcnRlZC4KKyAgICB2YXIgcmVj
ZWl2ZXIgPSB7fTsKKyAgICB2YXIgb2JqZWN0ID0geworICAgIH07CisKKyAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChvYmplY3QsICdDb2NvYScsIDQyLCByZWNlaXZlciksIHRydWUpOworICAgIC8v
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ0NvY29hJyksIHVuZGVmaW5lZCk7CisgICAg
Ly8gc2hvdWxkQmUoUmVmbGVjdC5nZXQocmVjZWl2ZXIsICdDb2NvYScpLCA0Mik7CisKKyAgICB2
YXIgb2JqZWN0MiA9IHsKKyAgICAgICAgc2V0IENvY29hKHZhbHVlKSB7CisgICAgICAgICAgICBw
cmludCh2YWx1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSh0aGlzLCByZWNlaXZlcik7CisgICAg
ICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKyAgICB9OworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ0NvY29hJywgNDIsIHJlY2VpdmVyKSwgdHJ1ZSk7Cisg
ICAgLy8gc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnQ29jb2EnKSwgdW5kZWZpbmVkKTsK
KyAgICAvLyBzaG91bGRCZShSZWZsZWN0LmdldChyZWNlaXZlciwgJ0NvY29hJyksIDQyKTsKK30o
KSk7CisKKyhmdW5jdGlvbiBwcm94eUNhc2UoKSB7Cit9KCkpOworCisoZnVuY3Rpb24gb2JqZWN0
Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAgdmFyIG9iamVjdCA9IHt9OworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIDApLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IDApLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRl
ZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworCisg
ICAgdmFyIG9iamVjdCA9IHt9OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0
YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0
LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5
KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6
IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAg
ICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisKKyAg
ICB2YXIgb2JqZWN0ID0ge307CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShv
YmplY3QsICdoZWxsbycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdD
b2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0pLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2En
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7
ICAvLyBSZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAg
ICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgeworICAgICAg
ICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCks
ICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAg
ICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5
bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9s
LCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAg
IHZhciBvYmplY3QgPSB7fTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9i
amVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0Nv
Y29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAn
Q29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwg
J0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5
bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3lt
Ym9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJv
bCksICdDb2NvYScpOworfSgpKTsKKworKGZ1bmN0aW9uIGFycmF5Q2FzZSgpIHsKKyAgICAndXNl
IHN0cmljdCc7CisgICAgdmFyIG9iamVjdCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVjdFsxMDAwMDAwXSA9
ICJIZWxsbyI7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA1MCksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDUwKTsKKworICAgIHZhciBv
YmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
J2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxv
JywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQor
ICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3Vs
ZEJlKG9iamVjdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdy
aXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworCisgICAgLy8gTGVuZ3RoLgorICAgIHZhciBvYmplY3QgPSBb
XTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgn
LCAnQ2FwcHVjY2lubycpOworICAgIH0sIGBSYW5nZUVycm9yOiBJbnZhbGlkIGFycmF5IGxlbmd0
aGApOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKwor
ICAgIHZhciBvYmplY3QgPSBbXTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICds
ZW5ndGgnKSwgMCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywg
MjApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwg
MjApOworCisgICAgdmFyIG9iamVjdCA9IFtdOworICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgMCk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnbGVuZ3RoJywgMjApLCBmYWxzZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworCisgICAgdmFyIG9iamVj
dCA9IFtdOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVs
bG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOyAgLy8gUmV0dXJu
IHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJu
ICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgpIHsKKyAgICAgICAgfQorICAgIH0p
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1
cm4gdHJ1ZSBzaW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisKKyAgICB2YXIgb2JqZWN0
ID0gW107CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxs
bycsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAg
ICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVs
bG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dCwgMCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAg
ICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IDApLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAg
ICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAn
Q29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2En
KTsKK30oKSk7CisKKyhmdW5jdGlvbiBhcnJheUJ1ZmZlckNhc2UoKSB7CisgICAgJ3VzZSBzdHJp
Y3QnOworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIHRydWUpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCA0
Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQp
OworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgNDIpOworICAgIG9iamVj
dFsxMDAwMDAwXSA9ICJIZWxsbyI7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAw
LCA1MCksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDUwKTsK
KworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAn
Q29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29h
JywKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUob2JqZWN0Lmxlbmd0aCwgdW5kZWZpbmVk
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7
CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsK
KworICAgIHZhciBvYmplY3QgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgNjQpOworICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAnQ2FwcHVjY2lubycpLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2NCk7CisKKyAgICB2
YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChv
YmplY3QsICdieXRlTGVuZ3RoJywgMjAwMCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcg
QXJyYXlCdWZmZXIoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0LCAnYnl0ZUxlbmd0aCcsIHsKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSksIGZh
bHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdieXRlTGVuZ3RoJyksIDY0
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdieXRlTGVuZ3RoJywgMjApLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnYnl0ZUxlbmd0aCcpLCA2
NCk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQo
KSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0
KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0
ZXIgZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdD
b2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7
CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9
LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNl
dHRlciBleGlzdHMuCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29h
Jyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwg
eworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAg
fSwKKyAgICAgICAgc2V0KCkgeworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7ICAvLyBSZXR1cm4gdHJ1ZSBz
aW5jZSB0aGUgc2V0dGVyIGV4aXN0cy4KKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
IHN5bWJvbCksICdDb2NvYScpOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBBcnJheUJ1ZmZlcig2
NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycs
IHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAg
IH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVs
bG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8n
LCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycp
LCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
MCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAg
ICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDAp
LCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAgICAg
ICAgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9
KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29j
b2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsK
K30oKSk7CisKK1sKKyAgICBbIFVpbnQ4QXJyYXksIDEgXSwKKyAgICBbIFVpbnQ4Q2xhbXBlZEFy
cmF5LCAxXSwKKyAgICBbIFVpbnQxNkFycmF5LCAyIF0sCisgICAgWyBVaW50MzJBcnJheSwgNCBd
LAorICAgIFsgSW50OEFycmF5LCAxIF0sCisgICAgWyBJbnQxNkFycmF5LCAyIF0sCisgICAgWyBJ
bnQzMkFycmF5LCA0IF0sCisgICAgWyBGbG9hdDMyQXJyYXksIDQgXSwKKyAgICBbIEZsb2F0NjRB
cnJheSwgOCBdLAorXS5mb3JFYWNoKGZ1bmN0aW9uIHR5cGVkQXJyYXlDYXNlKFsgVHlwZWRBcnJh
eSwgYnl0ZXNQZXJFbGVtZW50IF0pIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAgdmFyIG9iamVj
dCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgMCk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCBzeW1ib2wsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgb2JqZWN0WzEwMDAwMDBdID0gIkhlbGxvIjsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDUwKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNTApOworCisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBl
ZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwg
J2hlbGxvJywgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxv
JywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQor
ICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgMCk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRydWUpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRCZShvYmplY3Qu
bGVuZ3RoLCA2NCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IHN5bWJvbCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3lt
Ym9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCBzeW1ib2ws
IDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwg
J0NvY29hJyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50
ICogNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAn
Q2FwcHVjY2lubycpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
Ynl0ZUxlbmd0aCcpLCBieXRlc1BlckVsZW1lbnQgKiA2NCk7CisKKyAgICB2YXIgb2JqZWN0ID0g
bmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2J5
dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50ICogNjQpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnLCAyMDAwKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2J5dGVMZW5ndGgnKSwgYnl0ZXNQZXJFbGVtZW50ICogNjQpOwor
CisgICAgdmFyIG9iamVjdCA9IG5ldyBUeXBlZEFycmF5KDY0KTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KCkgewor
ICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVj
dCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwg
J2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhp
c3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAg
ICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAg
ICAgICBzZXQoKSB7CisgICAgICAgIH0KKyAgICB9KSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgMCksIDApOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgMCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgp
IHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQo
KSB7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmpl
Y3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIg
ZXhpc3RzLgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29h
Jyk7CisKKyAgICB2YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOworICAgIHNob3VsZEJl
KFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgp
IHsKKyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOwor
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0
KCkgeworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0KKyAgICB9KSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDApOworICAgIHNob3Vs
ZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIDApLCA0Mik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICByZXR1
cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworfSk7CisKKworKGZ1bmN0aW9uIGFyZ3VtZW50
Q2FzZSgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFy
Z3VtZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwg
dW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8n
LCA0MiksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxs
bycpLCA0Mik7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIHVuZGVm
aW5lZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCB0cnVl
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOworICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIHVuZGVmaW5lZCk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdoZWxsbycs
IHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAgICAgd3JpdGFibGU6IGZh
bHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisg
ICAgICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKG9iamVj
dC5sZW5ndGgsIDApOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9i
amVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAg
IHdyaXRhYmxlOiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJl
ZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0MygpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3VtZW50czsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDApOworICAgICAgICBSZWZs
ZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAnQ2FwcHVjY2lubycpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgJ0NhcHB1Y2Npbm8nKTsKKworICAgICAg
ICBSZWZsZWN0LnNldChvYmplY3QsICdjYWxsZWUnLCAnQ2FwcHVjY2lubycpOworICAgICAgICBz
aG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdjYWxsZWUnKSwgJ0NhcHB1Y2Npbm8nKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGFyZ3Vt
ZW50czsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdo
ZWxsbycsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0Nv
Y29hJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVj
dCwgJ2hlbGxvJywgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIg
ZXhpc3RzLgorICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAn
Q29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29h
JzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXQoKSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAw
KSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIp
LCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgICAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAgICAg
ICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVl
KTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3RzLgorICAgICAgICBzaG91
bGRCZShSZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3Q1KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRzOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgewor
ICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAg
ICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIGdldCgpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSks
IHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2En
KTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNlKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBzeW1ib2wsIHsKKyAg
ICAgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgdGVzdDEoKTsKKyAg
ICB0ZXN0MigpOworICAgIHRlc3QzKCk7CisgICAgdGVzdDQoKTsKKyAgICB0ZXN0NSgpOworfSgp
KTsKKworKGZ1bmN0aW9uIGFyZ3VtZW50U3RyaWN0Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7
CisgICAgZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7
CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5l
ZCk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2hlbGxvJywgNDIpLCB0
cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgNDIp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCB1bmRlZmluZWQpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksIDQyKTsKKyAgICAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCB1bmRlZmluZWQpOworICAgICAgICBzaG91
bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsKKyAgICAgICAgc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCA0Mik7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAg
ICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAg
ICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hl
bGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdo
ZWxsbycsIDQyKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3Qs
ICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAgICAgICAg
ICAgd3JpdGFibGU6IGZhbHNlCisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxl
Y3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShvYmplY3QubGVuZ3Ro
LCAwKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5
bWJvbCwgeworICAgICAgICAgICAgdmFsdWU6ICdDb2NvYScsCisgICAgICAgICAgICB3cml0YWJs
ZTogZmFsc2UKKyAgICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIHN5bWJvbCksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dDMoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCAwKTsKKyAgICAgICAgUmVmbGVjdC5zZXQo
b2JqZWN0LCAnbGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksICdDYXBwdWNjaW5vJyk7CisKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICAgICAgUmVmbGVjdC5zZXQob2JqZWN0LCAnY2FsbGVlJywg
J0NhcHB1Y2Npbm8nKTsKKyAgICAgICAgfSwgYFR5cGVFcnJvcjogVHlwZSBlcnJvcmApOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBSZWZsZWN0LmdldChvYmplY3Qs
ICdjYWxsZWUnKTsKKyAgICAgICAgfSwgYFR5cGVFcnJvcjogVHlwZSBlcnJvcmApOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHRlc3Q0KCkgeworICAgICAgICB2YXIgb2JqZWN0ID0gYXJndW1lbnRz
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxv
JywgeworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2En
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCAnQ29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAn
aGVsbG8nLCA0MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlz
dHMuCisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2Nv
YScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwg
eworICAgICAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAn
Q29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIHRy
dWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOworICAgICAgICBzaG91bGRC
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgICAgICBn
ZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgc2V0KCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1ZSk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7Cisg
ICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgc3ltYm9sLCA0MiksIHRydWUpOyAg
Ly8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAgICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdDUoKSB7CisgICAgICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHM7CisgICAgICAg
IHNob3VsZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAg
ICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KG9iamVjdCwgJ2hlbGxvJywgNDIpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICAgICAgZ2V0KCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAgICAgfQorICAgICAgICB9KSwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgMCksICdDb2NvYScpOwor
ICAgICAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQyKSwgZmFsc2UpOworICAg
ICAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQ29jb2EnKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHN5bWJvbCwgeworICAgICAg
ICAgICAgZ2V0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9i
amVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9i
amVjdCwgc3ltYm9sLCA0MiksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICB9CisKKyAgICB0ZXN0MSgpOworICAgIHRl
c3QyKCk7CisgICAgdGVzdDMoKTsKKyAgICB0ZXN0NCgpOworICAgIHRlc3Q1KCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gc3RyaW5nT2JqZWN0Q2FzZSgpIHsKKyAgICAndXNlIHN0cmljdCc7CisgICAg
dmFyIG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAnaGVsbG8nKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChvYmplY3QsICdoZWxsbycsIDQyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAnaGVsbG8nKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
MCksICdDJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAwLCA0MiksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRC
ZShSZWZsZWN0LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWZsZWN0LmdldChvYmplY3QsIHN5bWJvbCksIDQyKTsKKyAgICBvYmplY3RbMTAwMDAwMF0gPSAi
Q29jb2EiOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNTApLCBmYWxzZSk7
CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKworICAgIHZhciBv
YmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAorICAg
ICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCAnaGVsbG8nLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmlu
ZVByb3BlcnR5KG9iamVjdCwgMCwgeworICAgICAgICB2YWx1ZTogJ0NvY29hJywKKyAgICAgICAg
d3JpdGFibGU6IGZhbHNlCisgICAgfSksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgMCwg
NDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsK
KyAgICBzaG91bGRCZShvYmplY3QubGVuZ3RoLCA1KTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIHZhbHVlOiAnQ29jb2EnLAor
ICAgICAgICB3cml0YWJsZTogZmFsc2UKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LnNldChvYmplY3QsIHN5bWJvbCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCBzeW1ib2wpLCAnQ29jb2EnKTsKKworICAgIC8vIExlbmd0aC4KKyAgICB2YXIg
b2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsICdsZW5ndGgnKSwgNSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAn
bGVuZ3RoJywgJ0NhcHB1Y2Npbm8nKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsKKworICAgIHZhciBvYmplY3QgPSBuZXcgU3RyaW5nKCJD
b2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdsZW5ndGgnLCAyMCksIGZhbHNlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdsZW5ndGgnKSwgNSk7CisKKyAgICB2
YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBPYmplY3QuZnJlZXplKG9iamVj
dCk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVuZ3RoJyksIDUpOworICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KG9iamVjdCwgJ2xlbmd0aCcsIDIwKSwgZmFsc2UpOworICAg
IHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2xlbmd0aCcpLCA1KTsKKworICAgIHZhciBv
YmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAnaGVsbG8nLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7CisgICAgICAgIH0K
KyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8n
KSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQob2JqZWN0LCAnaGVsbG8nLCA0
MiksIHRydWUpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgJ0NvY29hJyk7CisgICAgc2hv
dWxkQmUoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIDAsIHsKKyAgICAgICAgZ2V0KCkg
eworICAgICAgICAgICAgcmV0dXJuICdDb2NvYSc7CisgICAgICAgIH0sCisgICAgICAgIHNldCgp
IHsKKyAgICAgICAgfQorICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
b2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIDAsIDQy
KSwgZmFsc2UpOyAgLy8gUmV0dXJuIHRydWUgc2luY2UgdGhlIHNldHRlciBleGlzdHMuCisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAg
ICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9LAorICAgICAgICBzZXQoKSB7Cisg
ICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0
LCBzeW1ib2wpLCAnQ29jb2EnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsIHN5
bWJvbCwgNDIpLCB0cnVlKTsgIC8vIFJldHVybiB0cnVlIHNpbmNlIHRoZSBzZXR0ZXIgZXhpc3Rz
LgorICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisK
KyAgICB2YXIgb2JqZWN0ID0gbmV3IFN0cmluZygiQ29jb2EiKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2hlbGxvJywgeworICAgICAgICBnZXQoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gJ0NvY29hJzsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycpLCAnQ29jb2EnKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChvYmplY3QsICdoZWxsbycsIDQyKSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksICdDb2NvYScpOworICAgIHNob3Vs
ZEJlKFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAwLCB7CisgICAgICAgIGdldCgpIHsK
KyAgICAgICAgICAgIHJldHVybiAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIGZhbHNlKTsK
KyAgICBzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsIDApLCAnQycpOworICAgIHNob3VsZEJl
KFJlZmxlY3Quc2V0KG9iamVjdCwgMCwgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAwKSwgJ0MnKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iamVjdCwgc3ltYm9sLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAnQ29jb2EnOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxl
Y3QuZ2V0KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQob2JqZWN0LCBzeW1ib2wsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KG9iamVjdCwgc3ltYm9sKSwgJ0NvY29hJyk7Cit9KCkpOworCisoZnVuY3Rpb24gY3VzdG9tU2V0
dGVyKCkgeworICAgIC8vIEluIHRoaXMgY2FzZSwgUmVnRXhwLm11bHRpbGluZSBiZWhhdmVzIGxp
a2UgYSBzZXR0ZXIgYmVjYXVzZSBpdCBjb2VyY2UgYm9vbGVhbiB0eXBlLgorICAgIC8vIEFueXdh
eSwgaXQncyBPSywgYmVjYXVzZSBSZWdFeHAubXVsdGlsaW5lIGlzIG5vdCBzcGVjaWZpZWQgaW4g
dGhlIHNwZWMuCisKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgc2hvdWxkQmUoUmVm
bGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgJ0NhcHB1Y2Npbm8nKSwgdHJ1ZSk7CisgICAg
ICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KFJlZ0V4cCwgJ211bHRpbGluZScpLCB0cnVlKTsKKyAg
ICAgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgMCksIHRydWUp
OworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAsICdtdWx0aWxpbmUnKSwgZmFs
c2UpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QyKCkgeworICAgICAgICAndXNlIHN0cmlj
dCc7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4cCwgJ211bHRpbGluZScsICdD
YXBwdWNjaW5vJyksIHRydWUpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChSZWdFeHAs
ICdtdWx0aWxpbmUnKSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KFJlZ0V4
cCwgJ211bHRpbGluZScsIDApLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
UmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
MygpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KFJlZ0V4cCwgJ211bHRpbGluZScsIHsKKyAgICAgICAgICAgIHdyaXRhYmxl
OiBmYWxzZQorICAgICAgICB9KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KFJlZ0V4cCwgJ211bHRpbGluZScpLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KFJlZ0V4cCwgJ211bHRpbGluZScsICdDYXBwdWNjaW5vJyksIGZhbHNlKTsKKyAgICAgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNlKTsKKyAgICAg
ICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoUmVnRXhwLCAnbXVsdGlsaW5lJywgMCksIGZhbHNlKTsK
KyAgICAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoUmVnRXhwLCAnbXVsdGlsaW5lJyksIGZhbHNl
KTsKKyAgICB9CisKKyAgICB0ZXN0MSgpOworICAgIHRlc3QyKCk7CisgICAgdGVzdDMoKTsKK30o
KSk7CisKKyhmdW5jdGlvbiByZWdFeHBMYXN0SW5kZXgoKSB7CisgICAgdmFyIHJlZ2V4cCA9IG5l
dyBSZWdFeHAoJ0NvY29hJyk7CisgICAgcmVnZXhwLmxhc3RJbmRleCA9ICdIZWxsbyc7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5nZXQocmVnZXhwLCAnbGFzdEluZGV4JyksICdIZWxsbycpOworICAg
IHJlZ2V4cC5sYXN0SW5kZXggPSA0MjsKKyAgICBzaG91bGRCZShSZWZsZWN0LmdldChyZWdleHAs
ICdsYXN0SW5kZXgnKSwgNDIpOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQocmVnZXhwLCAn
bGFzdEluZGV4JywgJ0hlbGxvJyksIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJl
Z2V4cCwgJ2xhc3RJbmRleCcpLCAnSGVsbG8nKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuZGVm
aW5lUHJvcGVydHkocmVnZXhwLCAnbGFzdEluZGV4JywgeworICAgICAgICB2YWx1ZTogNDIsCisg
ICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChyZWdleHAsICdsYXN0SW5kZXgnKSwgNDIpOworICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KHJlZ2V4cCwgJ2xhc3RJbmRleCcsICdIZWxsbycpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQocmVnZXhwLCAnbGFzdEluZGV4JyksIDQyKTsKKworICAgIHNob3VsZFRocm93
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICByZWdleHAubGFz
dEluZGV4ID0gIk5HIjsKKyAgICB9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRv
IHJlYWRvbmx5IHByb3BlcnR5LmApOworfSgpKTsKKworKGZ1bmN0aW9uIGZ1bmN0aW9uQ2FzZSgp
IHsKKyAgICB2YXIgZnVuYyA9IGZ1bmN0aW9uICgpIHsgfTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmdldChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0
KGZ1bmMsICdhcmd1bWVudHMnLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
ZnVuYywgJ2NhbGxlcicpLCBudWxsKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChmdW5jLCAn
Y2FsbGVyJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoZnVuYywgJ2Nh
bGxlcicpLCBudWxsKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA1NGFjYjdiNWVi
NjJkYTk1Yjg1YTU5ODc3ODZlMTJiMzYxZTVhOGQzLi40NjllNDExYjNiMDJmNTUwYzY0Zjc1YmE3
MjZiNTFlM2FlM2E0YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTMyMCw3ICszMjAsNyBA
QCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQorYm9v
bCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jiwg
Ym9vbCYgcHV0UmVzdWx0KQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBj
c3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
IXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUluZm8u
cHJvcGVydHlJRCk7Ci0gICAgd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJ
RCwgcHJvcFZhbHVlLCBpbXBvcnRhbnQsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSB3cmFwcGVkKCku
c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGJmZGNlZjQ4
MDgwNTgxMjNlZTA2YmNkODA5NmU0MmYyNTg5MGQ4ZjAuLjIwYjlmZjUwNzQ5MmM2Yjk0MmY2ZGRi
NDA5YzMzYWQ0MDMyM2Y4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtNzAxLDkgKzcwMSwxMCBAQCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiVmFs
dWUgaXMgbm90IGEgc2VxdWVuY2UiKTsKIH0KIAotdm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGF0dHJpYnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSkKIHsKICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIs
IGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCAwOTE2
ZGUxMzYwODVmMjQ1OWM1NThhODFkYWI0ZWY0NmU1YmY3MWY3Li5jODkwMmU2OWJlNzA3ZjZkODY5
MjkzYmUxZTc1YjE0ZWY4NjhlYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiB2
b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CiB2b2lkIHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRU
eXBlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpOwogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZh
bHVlcyk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggMjI3MWZkOWFiOWE3Y2FkMGUzYTNiNThjOWI5
MGUzODdmMDgwOTcyOS4uNjJiN2UzZmNiY2ZiOThmYWIyN2U5OTQ4ZmZjMjU4ZGFjYWZmZTc2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbgogICAgIHJl
dHVybiBkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlu
ZGV4KSk7CiB9CiAKLWJvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKK2Jvb2wgSlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNiArODUsNyBAQCBib29sIEpTRE9NU3Ry
aW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5zZXRJ
dGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAg
ICAgcmV0dXJuICFlYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggZjIwYTZmNzRmNTk0MTUxMGZmOGUzYjYyZDRhYjZmMzAwNjAy
YWViZi4uMjQ1N2I5MThlOGQxMjA3NDQwZGNmMjkyNDJlOTE1YzMxZTA3ODQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xMDMsNyAr
MTAzLDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKIHsKICAgICBB
U1NFUlQobV93cmFwcGVkLT5kb2N1bWVudCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxFeGVjKCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlc1RvdWNoV2F0Y2hwb2lu
dFNldCh0aGlzLCBleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCB0b0pT
KGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1lbnQoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzVG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBwdXRSZXN1bHQpOwogfQogCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGM2MDIwYTZkZjNhNGUxNDM0ZWMxOGEyYjRmMGZmN2NhNzZjYzRhMDYuLjIyZWExZGZk
YzMxMDVkNTQ1YjI1MTY3NDc2N2ZkOWQ2YjdjMzlkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTM0MiwzMiArMzQyLDM1IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgcmV0dXJuIGpzRE9NV2luZG93R2V0T3duUHJv
cGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKHRoaXNPYmplY3QsICpmcmFtZSwgZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBpbmRleCksIHNsb3QpOwogfQogCi12b2lkIEpTRE9NV2luZG93Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNET01XaW5k
b3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICBpZiAoIXRo
aXNPYmplY3QtPndyYXBwZWQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JN
ZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBh
dHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sb2NhdGlvbikKLSAgICAgICAgICAgIGxvb2t1cFB1dChleGVjLCBw
cm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFi
bGUsIHNsb3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wcmludEVy
cm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uKSB7CisgICAgICAg
ICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxvb2t1cFB1dChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QsIHZhbHVlLCAqc19pbmZvLnN0YXRpY1Byb3BI
YXNoVGFibGUsIHNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
T2JqZWN0LT5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3c6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBKU0RPTVdpbmRvdzo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBlZCgp
LmZyYW1lKCkgfHwgIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhleGVjLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiBCYXNlOjpwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBi
b29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggOWRm
YmI0ZDUzZWZlYmM3ZDMzM2Q5MzRjMTg1NTE1MGUwNjYzOTEzZS4uMjI5ZTY4Mzk5OGUzOTJlNTE2
NzQ4ZTYyNTQ3ZmVmZjk4NGViODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTM4LDkgKzM4LDkg
QEAgYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwogfQogCi1ib29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0hUTUxBcHBsZXRFbGVt
ZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0
KQogewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHRoaXMsIHNsb3QpOworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7CiB9CiAK
IENhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwg
Q2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYTJlOTE4MzEwYjFlZGE0OWUx
N2I1ZDA4MGI4YzQ0OWUxMThmMDFkMi4uOTE5ZjY4NjYyYTExYjU4MmFkYWViMDgyYWZjNTBiZDcy
NWJhN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgSlNIVE1MRW1i
ZWRFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtCiAgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRo
aXMpOwogfQogCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICByZXR1cm4gcGx1
Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90
KTsKKyAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwogfQogCiBDYWxsVHlwZSBKU0hUTUxFbWJl
ZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA4M2Y5OGY3ZjdjYzNkMTBiNTEzMTA2ZDVjNjI5YzU2NDZkY2Y3
MTZmLi40YTg2NDdmODllYmM3MDA3MjllYzgzMGNhNmRhYzliOWU4ZTczMWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93
blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTE9iamVjdEVs
ZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7CiB9CiAKLWJvb2wg
SlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
Citib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0
b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CisgICAgcmV0dXJu
IHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywg
c2xvdCwgcHV0UmVzdWx0KTsKIH0KIAogQ2FsbFR5cGUgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDU3MGY5Y2ZiODVl
ODljOGI1YTk2NmU0OTliMTA4ZDQxNzUzY2NjYjIuLjhmZmRhMTI2ZTMwNzNhMzY1NjMwYTQ0YzE1
OTU1MTBmODFhOTc5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwCkBAIC02MCw4ICs2MCw5IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0g
ZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NSw3ICs3Niw3IEBAIGJvb2wgSlNMb2Nh
dGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlCiAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNMb2NhdGlv
bjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwogICAg
IGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVEb21haW5BY2Nlc3MpCi0gICAgICAgICAg
ICBKU09iamVjdDo6cHV0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgICAgICAgICAgcHV0UmVzdWx0ID0gSlNPYmplY3Q6OnB1dCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MzcsOCArMTM4LDkgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgd3JhcHBl
ZCgpLnRvU3RyaW5nKCkpOwogfQogCi1ib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgcHV0UmVzdWx0ID0gZmFsc2U7
CiAgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuY3BwCmluZGV4IDdlYTczYjExMTNkMGFmN2MxY2U3MTdiYmJjODRhODgyNjc3
MDk1NjkuLjI4NjUzNzJlOWFlNzFmNGE1Y2E1MDRlZTA4NDk1NWFiNWViMTRkYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgSlNIVE1M
RWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBwbHVnaW5FbGVt
ZW50Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBs
dWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghc2NyaXB0T2JqZWN0LT5oYXNQcm9wZXJ0
eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2NyaXB0
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NyaXB0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKyAgICBwdXRSZXN1bHQgPSBzY3JpcHRPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IDNkZjU1MDI3ZjAwOWQzMjk2
MmE3YTIyZjdkNjk2MzkyYzdhMGNlNWYuLjdhM2Y4MzJkOWRhYTVlNzk2MDdiZDFiMjcxYjM5NmNj
Mjg4YzcwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oCkBAIC00MSw3ICs0MSw3IEBACiAgICAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLAogICAg
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBib29sIHBsdWdp
bkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50Kik7Ci0gICAgYm9v
bCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNIVE1MRWxlbWVudCosIEpTQzo6UHV0UHJvcGVy
dHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKICAgICBKU0M6OkNhbGxUeXBlIHBsdWdpbkVsZW1l
bnRHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwgVHlwZSogZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IGIw
YWE5ODcyMjYzMzAwNjJhMmY2ZmM2ZTM5ZmRhNmExZTE1ZGU0ZjAuLjkwNzRlZWU3YzUwY2QxMDlh
ZmE0MDg4Y2U0NTA4ZjQ2ODU2ODQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEpTU3RvcmFnZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TgogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCitib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgLy8gT25seSBwZXJmb3JtIHRoZSBj
dXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5
IHRoaXMgbmFtZS4KICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxs
aW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hlY2sK
QEAgLTExOSwxMyArMTE5LDE0IEBAIGJvb2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8g
aWYgdHJ1ZSwgdGVsbHMgdGhlIGNhbGxlciBub3QgdG8gZXhlY3V0ZSB0aGUgZ2VuZXJpYyBwdXQp
LiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSB3aGV0aGVyCiAgICAgICAgIC8vIHB1dERlbGVnYXRlKCkg
ZGlkIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIG9yIG5vdCAod2hpY2ggaXQg
ZGlkbid0IGluIHRoaXMKICAgICAgICAgLy8gY2FzZSBkdWUgdG8gdGhlIGV4Y2VwdGlvbikuCisg
ICAgICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuc2V0SXRlbShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBwdXRSZXN1bHQgPSAhZWM7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYTAwODAzNzU1MjdjZDQ4YjBkOTI4NmI3YTZmMDgyM2ZkYjRm
NjVmMy4uNzJkMTNmZDUzZjljYWViNzY1YTY5YjczZWJjMzgxY2NmODVhODI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTEwNDAsOSArMTA0MCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0ZXJzCiAg
ICAgaWYgKCRvdmVycmlkZXNQdXQpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9OworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifTsKICAgICB9CiAKICAgICBpZiAoISRo
YXNQYXJlbnQpIHsKQEAgLTEzNDAsNyArMTM0MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0
ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0xODg4LDcgKzE4ODgsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYg
KCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9
IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAg
ICAgfQpAQCAtMTg5OSw3ICsxODk5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgfQogCiAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJzZXRKUyIg
LiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KQEAgLTIxNDMsMTIg
KzIxNDMsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJPblBy
b3RvdHlwZSJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFt
ZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUq
PihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09i
amVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKVxuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgfQogCkBAIC0yNTM4LDE4ICsyNTM5LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gInNldEpT
IiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y29uc3RydWN0b3JGdW5j
dGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7
CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3JcbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGRv
bU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KICAgICBteSAkaGFzQ3VzdG9tU2V0dGVyID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0KQEAgLTI1NTcsMjYg
KzI1NTgsMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICgkaGFzQ3Vz
dG9tU2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xh
c3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFt
ZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRT
ZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0
LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG4iKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0gfHwgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7XG4iKTsKQEAgLTI1ODQsMTggKzI1ODYsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRoaXNPYmpl
Y3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleCwgdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91
bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xu
Iik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91
bGRUaHJvdyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gQmFzZTo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRU
aHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MTksNyArMjYyMiw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHth
dHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0
cmluZzsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7cHV0RnVuY3Rp
b25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CkBAIC0yNjMxLDcgKzI2
MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVuaWVudFRoaXMifSkgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbklu
c3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAgICAgICAg
ICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhlIHByb3RvdHlwZSBjaGFpbiBm
b3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwpAQCAtMjY0Myw4ICsyNjQ2LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRp
bnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqc3Rh
dGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFt
ZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VO
YW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBAIC0yNjU0
LDExICsyNjU2LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQo
KS5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGNhc3RlZFRoaXMtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCpzdGF0ZSwg
dmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudEhhbmRs
ZXIiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJp
YnV0ZUV2ZW50TmFtZSgkYXR0cmlidXRlKTsKQEAgLTI2NzMsNiArMjY3Niw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzZXRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkc2V0dGVyKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwg
JGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8p
IHsKICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25z
dHJ1Y3RvciQvLzsKQEAgLTI2ODMsMTAgKzI2ODcsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25z
dHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0
ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC5cbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAg
ICAgbXkgJHB1dEZvcndhcmRzID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUHV0Rm9yd2FyZHMifTsKQEAgLTI2OTYsNyArMjcwMCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7YXR0cmlidXRlVHlwZX0+IGZvcndhcmRlZElt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuJHtpbXBsR2V0dGVyRnVuY3Rpb25OYW1lfSgpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFmb3J3YXJkZWRJbXBsKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
JiBpbXBsID0gKmZvcndhcmRlZEltcGw7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBdHRyaWJ1dGUgaXMgbm90IG51
bGxhYmxlLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcmVmZXJl
bmNlLgpAQCAtMjcyNiwxNCArMjczMCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJGFy
Z1R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmluaGVy
aXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSkpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpz
dGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJGFyZ1R5cGVcIik7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4gIiBuYXRp
dmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFs
dWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRp
b25hbCJ9KSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKICAg
ICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNvZGVHZW5lcmF0b3ItPlZhbGlk
RW51bVZhbHVlcygkdHlwZSk7CkBAIC0yNzQyLDEzICsyNzQ2LDEzIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAi
bmF0aXZlVmFsdWUgIT0gXCIkZW51bVZhbHVlXCIiKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYgKCIgLiBqb2lu
KCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
IChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGUgZXEgImRvdWJsZSIgb3IgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJmbG9h
dCIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIFR5cGVFcnJv
cik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjc1Niw3ICsyNzYw
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYg
KCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNv
ZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjc4MCw2ICsyNzg0LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwg
QGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNs
dWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlKSBhbmQgbm90ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiQXJyYXlCdWZm
ZXIiKSB7CkBAIC0yNzk4LDEyICsyODAzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlv
bk5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHVu
c2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTZXR0ZXJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAi
IikpOwotICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2Fs
bFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdp
dGgifSwgXEBpbXBsQ29udGVudCwgIiIpKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChA
YXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlNldHRlckNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIp
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxX
aXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKIAogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBhcmd1bWVudHMsICJlYyIpIGlmICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpO1xuIikgaWYgJHNl
dHRlclJhaXNlc0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAKQEAgLTQ2NTQsOCArNDY2MCw4IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0
aW9uCiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9t
TmFtZWRHZXR0ZXJPblByb3RvdHlwZSJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IlxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsK
ICAgICB9CiAKICAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBkNmM1YTQzNTRlMWZmMWFlZGY1YjBjODUy
NmMyMmMzZTUxYjAyOTI5Li5lZjVmMDMzYWI1YjMwZmM4M2ZjNzI2ZWY0ZmU1ZjZmODE1NzJlYTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNDIsNyArNDIsNyBAQAog
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpA
QCAtMTc0LDE2ICsxNzQsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rl
c3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEFj
dGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RB
Y3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggYjQwZjIwM2FkNGY3MTQ1YzZkNWI1Njgw
MWIxYzkyZDYyMTI2NjA5Mi4uZGI1ZTc5YmY0OWRiMzk3MWI3YmU2MmRmNjc1MDgyNjI5NDczMjZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAKIGNsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMjksMTYgKzEy
OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CmluZGV4IDM4ZjE0ODgyOWY2OGNkNjQ0YjY1ODM1ZGI4MWU1YTlmYWY1YTdiMTcuLjIzMzk3NTMx
ZDBiYTQzM2M5NThjOTI0OTcyMGE5OGEzYWEwMWJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApAQCAtMzMsNyArMzMsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTMxLDE2ICsxMzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdG9yKTsKIH0KIAotdm9pZCBz
ZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52
bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0
dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKIGJvb2wgSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDlmNjlkZWMz
YmU4YzJkYjVmMGMxMjUwMTY5YjU1MjU5ZjNiY2MzNzkuLmI1NThlY2UyNGNlNmU2MGY4MDJlZmJi
MDA3YmI2MGRkMGRhM2I1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY2LDE2ICsx
NjYsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IGQxOWI1ZmRkNzliNDRkYTNiNjczOWZmY2ZiZmEyM2IxMzQ4MWQ4YzEuLjVkYTNjMmY4
ZTdjNzBhMGI2OGQ2NzMwMDM1YmM5OWMyOGI5NTJmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yQXR0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBj
bGFzcyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0yMDIsMTYgKzIwMiwxNiBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAzY2Y3Yzk0ZjZiOTRlMjAzNjAxODA3YzhmNzRmMjM2
Yzg3NDg3MzY3Li4xZmMzYmU4MTU3NWJiMTE4NDVjN2I2YmY0MTlkZDJhM2JiMjgzNmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIC8vIEF0dHJpYnV0ZXMK
IAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NSwxNiArMTY1
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApp
bmRleCBlODJiNDQ5YTY3OTM0YmYxMzJhYjRlNDdiZjhmOTcyYjQxYTkzYmNkLi5hMmRjMWEyMzlh
MGQ5Y2UyYjFkYmU0NGYxMjEzMmFjM2I1YTQyNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApA
QCAtMzYsNyArMzYsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5h
bWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKIH0KIAogSlNW
YWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcAppbmRleCBlOTIxZmYwOWMzZTk3Yjg0MjA2NDVlYjZiOTY5MzM4ZWE5ZDE1OWNkLi43
MmNhMTlmNjk0MDc1Yjc5OWE4MTdiYzIzN2YyYzdlZjE5MWYzZDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAvLyBBdHRyaWJ1
dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K2Jvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNz
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEyMywxNiArMTIzLDE2IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJl
dHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMjFhZTNjNmMzMjUxNjE1NTdj
NTUwN2U3MTVhZWQ5MDNmNDBmODBhMi4uZmE1MTY5YWNlNjViNTQ5MGM2OWQ2ZWMyZjYwMmU4ZTk0
YjlmYjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTgzLDQ3ICs4Myw0NyBAQAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRp
Y0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRp
Y0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNT
dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
MyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
U3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50YWxTdHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpA
QCAtNTk0LDE2NCArNTk0LDE2OCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIEpTVGVzdEludGVyZmFjZTo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5w
dXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1
bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpT
VGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUs
IHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQorYm9vbCBK
U1Rlc3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRl
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGlu
ZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworICAgIHJldHVy
biBCYXNlOjpwdXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93
KTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
dm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVu
dHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1
ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgVGVzdEludGVyZmFjZTo6c2V0SW1wbGVtZW50c1N0YXRpY0F0dHIobmF0aXZlVmFsdWUp
OworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0SW1wbGVtZW50c1N0
cjIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEltcGxl
bWVudHNTdHIzKCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotdm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
SW1wbGVtZW50c05vZGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9p
ZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVu
dGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0
dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotdm9pZCBzZXRKU1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCBu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi12b2lkIHNldEpTVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRT
dXBwbGVtZW50YWxTdHIzKCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQot
dm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9k
ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBOb2RlKiBuYXRpdmVW
YWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBs
LCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCmluZGV4IDVkYjRhNmU1MGMwOWU3MzFhOWJlYTI2MzA3MWU2ZmUzNThkNzY2YmUuLmYw
YjYwYjRhMzk1NGJjNzIwNGI1M2M0MDZjNzhkNWVhYzQ4MjVmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNl
IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0RGVs
ZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMjIzZjkyZTc3NjYwYzc4MmIzZTFi
ZWE1NWI2ZDM0NWViNDM3OTIzMy4uNDAxMmJlNTEyMWFmYjg0YTc1OGQxYjc0YmZhN2YyMzZhZGQ4
MWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC00
MCw5ICs0MCw5IEBACiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0xNjYsMjggKzE2NiwyOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
LXZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZVJXQ3VzdG9tIik7CiAgICAgfQogICAgIGNh
c3RlZFRoaXMtPnNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKaW5kZXggNzY4YzgzNzZhZDU1MWU1ZTIwZWQwMzMxZTY1MGY2NzZiNmIwNThjMC4u
MzJjMGE3NGViZDEwYjQ3ODYxNmY3OWNkZjRjMjlkOGUxYTQyMjUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNDAsNyArNDAsNyBAQAogLy8g
QXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMzEsMTYgKzEzMSwx
NiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
Ci0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVl
KTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWJlZGE1MzdlNTg1OWI3ZDg1NzczZGJj
YmNhY2YxZmY5NGI3NmM3MS4uMjMxNTg3NTc1YjIzZGE2MTJmZDg2NzFlOGFiMTMwMjJhZTE5NTZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBA
QAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBj
bGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xNjQsMTYgKzE2NCwxNiBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKaW5kZXggZTdhNWMzZTBkMmNlOWNiMWY0MzIwMDQwNTNjNzc5ODU0YTJiNTZmOS4uNTUy
ZjcxN2FlOGUxOTcxOThmYTU2MzRmNDE3MWU5YTg2NGIxYTVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAt
MzYsOSArMzYsOSBAQAogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vZGVOYW1lKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb2RlTmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb2Rl
TmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIAogY2xhc3MgSlNUZXN0Tm9kZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMTQ0LDMyICsxNDQsMzIgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLXZv
aWQgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vZGVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5v
ZGUiLCAibmFtZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0g
dmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0TmFtZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmluZGV4IGE3Njk0ODVhMWQ0
NDI1MWU3Y2RhNDI3ODc3YzQxYzAzMmIyY2RiY2QuLjhjMjljNGI2ODdlYmQ3ODVjMWFkMzY3NjZk
NzZlMGQ5YzMzNjVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAg
LTQ4LDE1ICs0OCwxNSBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lk
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJs
ZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0
ZXJFeGNlcHRpb25BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0
aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAKIGNsYXNzIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTMzMSw4NSArMzMxLDg1IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21P
YmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25k
ZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVy
bWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5v
bmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RO
b25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0
aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1
ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJt
aW5pc3RpY0V4Y2VwdGlvbkF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJF
eGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE5vbmRldGVybWluaXN0aWNHZXR0ZXJF
eGNlcHRpb25BdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lk
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9u
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9u
ZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWlu
aXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROb25k
ZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggZTIwNWM1MjA2NzQ2MDJjYmUxMGI1ZWNmODhlZjA3ODIzOGNjNDY1MC4uNTM3M2Iw
ZmE3YTY1OTY2ZDY5MTVkNzM3ZjE5MThkNGM1OTEyYjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIwMiwx
NTkgKzIwMiwxNTkgQEAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlUZXN0
T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNS
ZWFkT25seUxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
clN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3Ry
aW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RP
YmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2ln
bmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0
T2JqTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVk
TG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29s
IHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rl
c3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNU
ZXN0T2JqQ3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3lt
Ym9sQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNS
ZWFkT25seVN5bWJvbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRl
Z3JhbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5n
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpUeXBl
ZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0
SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bldpdGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRK
U1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
Ym9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iak9uZm9vKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpPbmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpP
bmZvbyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9v
bCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12
b2lkIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpT
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRp
b24xKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVk
QXR0cmlidXRlMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRl
MihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpNdXRh
YmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpJbW11
dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpTdHJh
d2JlcnJ5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialN0cmljdEZsb2F0
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Citib29sIHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakRlc2NyaXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LXZvaWQgc2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Citib29sIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iak51bGxh
YmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakF0
dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdE9iakF0dHJpYnV0
ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1
dEZvcndhcmRzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBz
ZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citi
b29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE9ialByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjA0NywxMTAw
ICsyMDQ3LDEwOTcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0T2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RP
YmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFN0cmluZyBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJpbmdBdHRyKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialRlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
ZyIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRo
aXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwg
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHZhbHVlKTsKKyAgICByZXR1cm4gY2FzdGVk
VGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRl
LCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOwogfQogCiAKLXZvaWQgc2V0
SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakVudW1B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAobmF0aXZlVmFsdWUgIT0gIiIgJiYgbmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTEiICYmIG5h
dGl2ZVZhbHVlICE9ICJFbnVtVmFsdWUyIiAmJiBuYXRpdmVWYWx1ZSAhPSAiRW51bVZhbHVlMyIp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0RW51
bUF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakJ5dGVBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGludDhfdCBuYXRpdmVWYWx1ZSA9IHRvSW50OChzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldEJ5dGVBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0
ZXRBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSA9
IHRvVUludDgoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRPY3RldEF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQx
Nl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFNob3J0QXR0cihuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25l
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9y
dEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNo
b3J0QXR0ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdWludDE2X3QgbmF0
aXZlVmFsdWUgPSB0b1VJbnQxNihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkU2hvcnRBdHRyKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxvbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdBdHRyIik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TG9uZ0F0
dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0
T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0
dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBsb25nIGxvbmcgbmF0aXZlVmFsdWUg
PSB0b0ludDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TG9uZ0xvbmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9uZ0xvbmdB
dHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkTG9uZ0xv
bmdBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRy
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVl
LnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpbXBsLnNldFN0cmluZ0F0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAidGVzdE9iakF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RP
YmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFRlc3RPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNl
dExlbmllbnRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWVU
b1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoc3RhdGUsIHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpYTUxP
YmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0
ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aW1wbC5zZXRYTUxPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ci12b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRl
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvQm9v
bGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q3JlYXRl
KG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRy
QXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0
dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdW5zaWdu
ZWQgbmF0aXZlVmFsdWUgPSB0b1VJbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFVuc2lnbmVkSW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0
ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3Rv
bUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBs
LnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudElu
dGVncmFsQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBib29sIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9t
Q29udGVudEJvb2xlYW5BdHRyQXR0ciwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9TdHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJD
b3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciwgbmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG5hdGl2ZVZhbHVl
ID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNz
YWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCitib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0
SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNz
YWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRv
SW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKG5h
dGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJz
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmco
c3RhdGUpLT52YWx1ZShzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwu
c2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBuYXRp
dmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KG5hdGl2ZVZhbHVlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVD
aGVja2luZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAm
JiAhdmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKSkgewogICAgICAgICB0aHJvd0F0
dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdFR5cGVDaGVja2luZ0F0
dHJpYnV0ZSIsICJUZXN0T2JqIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH07CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0U3RyaWN0
VHlwZUNoZWNraW5nQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogCi12b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNl
dEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJjdXN0b21BdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwogICAgIH0K
ICAgICBjYXN0ZWRUaGlzLT5zZXRDdXN0b21BdHRyKCpzdGF0ZSwgdmFsdWUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiti
b29sIHNldEpTVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAib25mb28iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvbmZvbyIpOwogICAgIH0KICAgICBzZXRF
dmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2
ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0
aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGltcGwuc2V0V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRl
LCBhY3RpdmVET01XaW5kb3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSksIG5hdGl2ZVZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1
cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqc2Ny
aXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQorYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoKnN0YXRlLCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAg
IGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKnNjcmlw
dENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAqc2NyaXB0Q29udGV4dCwgbmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8q
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2Ny
aXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpzY3JpcHRD
b250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCAqc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0V2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQotdm9pZCBzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMShuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpICYmIEVOQUJMRShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMihuYXRpdmVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQotdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKHN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlt
cGwuc2V0Q29uZGl0aW9uYWxBdHRyMyhuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi12b2lkIHNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRp
dGlvbmFsQXR0cjQiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuCi0gICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CisgICAgcmV0
dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLXZvaWQgc2V0SlNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3Rvci4KLSAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsK
KyAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Citib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjYiKSwg
dmFsdWUpOworICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsK
IH0KIAogI2VuZGlmCiAKLXZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQorYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnlB
dHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgc3RhdGUtPnZt
KCksIHZhbHVlIH07CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QW55QXR0
cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpT
VGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJs
ZVBvaW50Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2Zm
PFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE11dGFibGVQb2ludChuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFi
bGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2ludCIp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltbXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialN0cmF3YmVycnko
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyYXdiZXJyeSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRCbHVl
YmVycnkobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNU
ZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialN0cmlj
dEZsb2F0KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0Rmxv
YXQiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGZsb2F0IG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
U3RyaWN0RmxvYXQobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQg
c2V0SlNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iaklkKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJZChuYXRpdmVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAotdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNl
YWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdC4KLSAgICBjYXN0ZWRU
aGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUs
ICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNhc3RlZFRoaXMt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJl
cGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9iak51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGltcGwuc2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUobmF0
aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVs
bGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwg
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiAKLXZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K2Jvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihzdGF0ZSwg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
bXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVu
dW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRl
V2l0aFJlc2VydmVkRW51bVR5cGUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVz
ZXJ2ZWRFbnVtVHlwZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobmF0aXZlVmFs
dWUgIT0gIiIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFsdWUxIiAmJiBuYXRpdmVWYWx1
ZSAhPSAiT3B0aW9uYWxWYWx1ZTIiICYmIG5hdGl2ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMyIp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCitib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBSZWY8VGVz
dE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNB
dHRyaWJ1dGUoKTsKICAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTsKICAgICBT
dHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXROYW1lKG5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVs
bGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdE9ialB1dEZvcndh
cmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0
Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBSZWZQdHI8VGVzdE5vZGU+
IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJs
ZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byYgaW1wbCA9ICpmb3J3YXJkZWRJbXBsOwog
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldE5hbWUobmF0aXZlVmFs
dWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBmNDM3NDJkYjM5Yjg1YjBmNzM5NjY2MDJmMGRkNTBi
ZjhmNGE5YzEyLi4xYWUyOTdkZTJhMzYwZTQwNDgxNDYyZjEzMjc1YjM1Mjk5ZDA5OGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIw
MywxNiArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVybiBkb21PYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgdmFsdWUpOwogfQogCiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCA2OTNhZTRjOTA4OTE1
ZDc4OWZlODFkOWEyOWViZDg5YjRmZWE3YzUyLi41MGIxOGM2NWZjYjg0NjJhNDFhYmYyM2RhYjVk
YjBhNGU2NmJiNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC00
Miw3ICs0Miw3IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCwxNiArMTY0LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0o
KSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworICAgIHJldHVy
biBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCiB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCA0OTJlMGQ2YjFjYjBlYjI0MTUyMTczM2UwMDU2NzMyNTcxMjUyZWYxLi45Nzcy
Mjc5ODY3YjFjMjNlMGQ4ZTIzNTQ2MGViMGFlODljMGMxMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNDAsMTQg
KzQwLDE0IEBACiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
dm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQb3J0cyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNl
dEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNs
YXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjIzLDQ5ICsyMjMsNDkgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBkb21PYmplY3QtPnB1dERp
cmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFs
dWUpOworICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOwogfQogCi12b2lkIHNldEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZh
bHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0VmFsdWUobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiAKLXZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVk
VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1w
bC5zZXRDYWNoZWRWYWx1ZShuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggOTllMzBkM2QzYWY5ZmI1OWQ5ZmJjMzg2NjYxNWQ0ZGEy
ZTYxOGM1Zi4uZjE3ZTk1MzIzNzM3NmUyNDVkOGEzOTBmYmRhMzIxNGM0ZWE4MTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCkBAIC02MCwyMCArNjAsMjAgQEAKIC8vIEF0dHJpYnV0ZXMKIAogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotdm9pZCBzZXRKU1Rlc3RUeXBl
ZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Citib29sIHNldEpTVGVzdFR5cGVk
ZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIGNsYXNzIEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0zMzIsMTIxICszMzIsMTIxIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotdm9pZCBzZXRK
U1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0
ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9i
amVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCB2YWx1ZSk7CiB9CiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExv
bmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUlu
dDY0KHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0dHIobmF0aXZlVmFsdWUpOworICAg
IHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZz
SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGltcGwuc2V0SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKG5hdGl2
ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5
cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbnQgbmF0aXZlVmFs
dWUgPSB0b0ludDMyKHN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZl
VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlwZWRlZnNB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0VHlw
ZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoc3RhdGUsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgc2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKHN0YXRl
KS0+dmFsdWUoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldFN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhzdGF0ZSkt
PnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRTdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOworICAgIHJldHVybiB0cnVlOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CmluZGV4IDgwZjY1YjZhZjljNjI3MjIzZjI1ZDIyZGU2MTNhN2I2ZGRiMzNjYTUuLjQ3Zjg2NmJm
MGZlNmM2YTY4NTA1ZDg0YjA1NDI3NjU4MTViZWY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci12b2lkIHNldEpTYXR0
cmlidXRlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
CiBjbGFzcyBKU2F0dHJpYnV0ZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTY0LDE2ICsxNjQsMTYgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRy
aWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTYXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi12b2lkIHNl
dEpTYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTYXR0cmli
dXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTYXR0cmlidXRlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZh
bHVlKTsKIH0KIAogSlNWYWx1ZSBKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBj
b25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IDRmMTA1
ZTA2ZjIxOGU5OTVkMmVjNzIxNTdiNzQwZWY4NDI4MjIzZDkuLmY4MzFlYWIyMzQ1NGY1MTdhZGZk
ZjQyOTc2MzM3ZTEzNjc0ZjVjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIC8v
IEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Ci12b2lkIHNldEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworYm9vbCBzZXRKU3JlYWRvbmx5Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKIAogY2xhc3MgSlNyZWFkb25seVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTIzLDE2ICsxMjMsMTYgQEAgRW5jb2RlZEpT
VmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTcmVhZG9ubHk6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLXZvaWQgc2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTcmVhZG9ubHlQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7CisgICAgcmV0dXJuIGRvbU9iamVj
dC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB2YWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfcnVudGltZS5jcHAKaW5kZXggYjIzMmIwNjVlOTQyNmE0NjcwODE2ZDVmYjA5YWEwZTY3
NjhhNTdkYy4uM2VmYTcxNDIxOTFlMjY5NDRjMThjNTM1NWEwY2IxM2U5MWFmNmExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUg
Q0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNl
KiBpbnN0KSBjb25zdAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi12b2lkIENGaWVs
ZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3QsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAorYm9vbCBDRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5j
ZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0LCBKU1ZhbHVlIGFWYWx1ZSkg
Y29uc3QKIHsKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ0luc3RhbmNlKj4oaW5zdCk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3RhbmNlLT5nZXRP
YmplY3QoKTsKQEAgLTY5LDE0ICs2OSwxNyBAQCB2b2lkIENGaWVsZDo6c2V0VmFsdWVUb0luc3Rh
bmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3QsIEpTVmFsdWUgYQogICAg
ICAgICBOUFZhcmlhbnQgdmFyaWFudDsKICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQo
ZXhlYywgYVZhbHVlLCAmdmFyaWFudCk7CiAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
ICAgICAgICAgewogICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGV4ZWMpOwotICAgICAgICAgICAgb2JqLT5fY2xhc3MtPnNldFByb3BlcnR5KG9iaiwgX2ZpZWxk
SWRlbnRpZmllciwgJnZhcmlhbnQpOworICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5fY2xhc3Mt
PnNldFByb3BlcnR5KG9iaiwgX2ZpZWxkSWRlbnRpZmllciwgJnZhcmlhbnQpOwogICAgICAgICAg
ICAgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAg
ICAgIH0KIAogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJnZhcmlhbnQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAppbmRleCAxMDY3MmVkOTgxYmY5YjY4NDhmNTZk
MzMzMzQ3MmNlYmM3ZWFkODk3Li4yMTlmZWZlZTQzMWZkNGJlNzMxMjY5NmU5OTQwNWFkODg2ZTRk
YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBDRmllbGQgOiBwdWJsaWMgRmllbGQgewogICAgIENGaWVsZChOUElkZW50aWZpZXIgaWRl
bnQpIDogX2ZpZWxkSWRlbnRpZmllcihpZGVudCkgeyB9CiAKICAgICBKU1ZhbHVlIHZhbHVlRnJv
bUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBK
U1ZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVj
U3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
TlBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBfZmllbGRJZGVudGlmaWVy
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IDAwMjk0ZmFkZDA1
OGFkOGQwM2RmN2FiMGNjNTI0ZGZiNWRmMjI2YjIuLjVmZTg1ZjVmNGMxM2RiOGYxYjdiZmM1ZjA3
NWMwYjlhNWRjOWRlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAt
NTIsNyArNTIsNyBAQAogY2xhc3MgRmllbGQgewogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1
ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1
ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIH5GaWVsZCgpIHsgfQogfTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBj
bGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbmNlPiB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9
CisgICAgdmlydHVhbCBib29sIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0KQEAgLTEyNCw3ICsxMjQs
NyBAQCBjbGFzcyBBcnJheSB7CiAgICAgZXhwbGljaXQgQXJyYXkoUmVmUHRyPFJvb3RPYmplY3Q+
JiYpOwogICAgIHZpcnR1YWwgfkFycmF5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVl
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5n
dGgoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
LmgKaW5kZXggNzY4OTY2YjQ4OThhMTRiN2MzZTcwZTlmOTA1NGNlYTE4ZDlmNjYwZi4uYjU4ZDFi
NjI5ZjQ4MTA0MTU3YTYyODkxYjIyZTllMDUwMmZhYWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgT2JqY0ZpZWxk
IDogcHVibGljIEZpZWxkIHsKICAgICBPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSk7CiAgICAg
CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1Zh
bHVlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJdmFyU3RydWN0UHRyIF9pdmFyOwpAQCAtNzgs
OCArNzgsOCBAQCBjbGFzcyBPYmpjQXJyYXkgOiBwdWJsaWMgQXJyYXkgewogcHVibGljOgogICAg
IE9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW50IGlu
ZGV4LCBKU1ZhbHVlIGFWYWx1ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQo
RXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBh
VmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIGludCBpbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVu
Z3RoKCkgY29uc3Q7CiAgICAgCiAgICAgT2JqZWN0U3RydWN0UHRyIGdldE9iamNBcnJheSgpIGNv
bnN0IHsgcmV0dXJuIF9hcnJheS5nZXQoKTsgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIE9i
amNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0lu
c3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IGE2YzkwMjM4NjA5MGRlYjA5MDUxMjY0ZWVkZDk4ODlhODFlNzhl
MGEuLjU5MGYyMjUzYTkxNDJiMmNlN2UzZGMxZjgwODY5MzYxYmY3YTBhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gW3dlYlNjcmlwdE9iamVjdENsYXNzKCkgX2NvbnZlcnRWYWx1
ZVRvT2JqY1ZhbHVlOnZhbHVlIG9yaWdpblJvb3RPYmplY3Q6cm9vdE9iamVjdC5nZXQoKSByb290
T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCldOwogfQogCi12b2lkIE9iamNGaWVsZDo6c2V0VmFsdWVU
b0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1Zh
bHVlIGFWYWx1ZSkgY29uc3QKK2Jvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBj
b25zdAogewogICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxjb25zdCBPYmpjSW5z
dGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsKICAgICBpZCB2YWx1ZSA9IGNvbnZlcnRW
YWx1ZVRvT2JqY09iamVjdChleGVjLCBhVmFsdWUpOwpAQCAtMTM4LDkgKzEzOCwxMSBAQCB2b2lk
IE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5z
dGFuY2UqIGluc3RhbmNlLCBKUwogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CiAgICAgICAgICAgICBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0
ZShleGVjKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChO
U0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0p
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0xNTIsMTYgKzE1NCwxNiBA
QCBPYmpjQXJyYXk6Ok9iamNBcnJheShPYmplY3RTdHJ1Y3RQdHIgYSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKIHsKIH0KIAotdm9pZCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAor
Ym9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQg
aW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogewogICAgIGlmICghW19hcnJheS5nZXQoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7CiAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291
bnRdKSB7CiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIC8vIEFsd2F5cyB0
cnkgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYW4gT2JqQyBvYmplY3QsIHNvIGl0IGNhbiBiZSBw
bGFjZWQgaW4gdGhlCkBAIC0xNzAsOCArMTcyLDEwIEBAIHZvaWQgT2JqY0FycmF5OjpzZXRWYWx1
ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4LCBKU1ZhbHVlIGFWYWx1ZSkK
IAogICAgIEB0cnkgewogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNl
cHRpb24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0yMjEsOCAr
MjI1LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCitib29sIE9iamNGYWxsYmFja09i
amVjdEltcDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKIHsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGVmOTky
NDgyNzg2ZjcyNWQ3MGVlMWVkYzNlMDcwY2Y2YjdmOGNjNWUuLmM1YjNjNGY3ZTdhMjE3OTI3MTIx
YjNjN2U3YzBmMWE0OTY3MWI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKQEAgLTExMSwzMSArMTExLDI5IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywKICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgaW5kZXgsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZUFycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVy
cm9yIikpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewotICAgICAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZh
bHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNl
dFZhbHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgIAotICAgIEpTT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkK
K2Jvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkKIHsKICAgICBSdW50aW1l
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYg
KGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3Ii
KSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
LSAgICB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQoZXhlYywgaW5k
ZXgsIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5z
ZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiB9CiAKIGJvb2wgUnVudGltZUFycmF5Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA1OGJhMDU5NmU2NDkxYTg0NDYyYmRjNmVl
ZDg2NGM1OWEyNTkyZWMxLi4wMThjMTMyNzhkYmEzZGQwMzE3MWU1M2VmYzBhZDdkZjBlMTA3ZTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTU2LDggKzU2LDggQEAg
Y2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAgICAgCiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGY3Zjk4YmY4YzBmNTE1ZTJhOThlYzZm
OWU3MDE2Mzk4NGU2NzY2NDUuLmE1NzNlMDVkNzU5YjA3NTcwZDI2MjFkOGU2MjYwMzY0MWNiYjRl
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMTYxLDI1
ICsxNjEsMjcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXIKICAgICByZXR1cm4gaW5zdGFuY2Ut
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi12b2lkIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5z
dGFuY2UpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKICAgICBpbnN0YW5j
ZS0+YmVnaW4oKTsKIAogICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgorICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgRmllbGQgKmFGaWVsZCA9IGluc3RhbmNlLT5nZXRD
bGFzcygpLT5maWVsZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOwogICAgIGlm
IChhRmllbGQpCi0gICAgICAgIGFGaWVsZC0+c2V0VmFsdWVUb0luc3RhbmNlKGV4ZWMsIGluc3Rh
bmNlLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIHJlc3VsdCA9IGFGaWVsZC0+c2V0VmFsdWVUb0lu
c3RhbmNlKGV4ZWMsIGluc3RhbmNlLmdldCgpLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIWluc3Rh
bmNlLT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSkp
Ci0gICAgICAgIGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLT5wdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBpbnN0YW5jZS0+ZW5kKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCmluZGV4IGIzYjY0MGFjYzU0ZjM0OGRjNWFmZTkyYzVmMzhmZTYy
Mjk0ODVmODEuLjgxZDRlYmQzYjRkYmI3MDk5MTE1ZGExMDI4MmIyOWZiZmZiMTg2ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKaW5kZXgg
MTNlMzJiYTYyMGUzNTA3ZTA0MmE5MGU4MTc0NDNkOTNhZjYzYjYwMi4uYWZiYTEwMjBkOTVkYWVi
NjNlMTdjN2ZiOTMyMTQxYWU4ZTk0ZDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQcm94
eUluc3RhbmNlIDogcHVibGljIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlIHsKICAgICBKU0M6OkJp
bmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6
OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6
OkZpZWxkKikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGaWVsZFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqLCBKU0M6OkpTVmFsdWUpIGNvbnN0OworICAgIGJv
b2wgc2V0RmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZp
ZWxkKiwgSlNDOjpKU1ZhbHVlKSBjb25zdDsKICAgICAKIAogICAgIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSogaW5zdGFuY2VQcm94eSgpIHsgcmV0dXJuIG1faW5zdGFuY2VQcm94eTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0K
aW5kZXggOWNkMGZiYzFiNGMyNTRkYTU0YzQxNDZlZGUyMDU4ZDdjYzBhZGMzMi4uNjcxNGU4Y2Y0
YWIyNzUzNjBkZDZhMDk5MTQ2YzU0ZDMwNzVhYWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogICAgIAogICAgIHVpbnQ2NF90IG1fc2VydmVy
SWRlbnRpZmllcjsKIH07CkBAIC05MSw5ICs5MSw5IEBAIEpTVmFsdWUgUHJveHlGaWVsZDo6dmFs
dWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2Up
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSkt
PmZpZWxkVmFsdWUoZXhlYywgdGhpcyk7CiB9CiAgICAgCi12b2lkIFByb3h5RmllbGQ6OnNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwg
SlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wgUHJveHlGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHZhbHVl
KSBjb25zdAogewotICAgIHN0YXRpY19jYXN0PGNvbnN0IFByb3h5SW5zdGFuY2UqPihpbnN0YW5j
ZSktPnNldEZpZWxkVmFsdWUoZXhlYywgdGhpcywgdmFsdWUpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBQcm94eUluc3RhbmNlKj4oaW5zdGFuY2UpLT5zZXRGaWVsZFZhbHVlKGV4ZWMs
IHRoaXMsIHZhbHVlKTsKIH0KIAogY2xhc3MgUHJveHlNZXRob2QgOiBwdWJsaWMgSlNDOjpCaW5k
aW5nczo6TWV0aG9kIHsKQEAgLTQxNiwxMCArNDE2LDEwIEBAIEpTQzo6SlNWYWx1ZSBQcm94eUlu
c3RhbmNlOjpmaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkKSBj
b25zCiAgICAgcmV0dXJuIG1faW5zdGFuY2VQcm94eS0+ZGVtYXJzaGFsVmFsdWUoZXhlYywgKGNo
YXIqKUNGRGF0YUdldEJ5dGVQdHIocmVwbHktPm1fcmVzdWx0LmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKHJlcGx5LT5tX3Jlc3VsdC5nZXQoKSkpOwogfQogICAgIAotdm9pZCBQcm94eUluc3RhbmNl
OjpzZXRGaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1Zh
bHVlIHZhbHVlKSBjb25zdAorYm9vbCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogewog
ICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICB1aW50NjRfdCBzZXJ2ZXJJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUHJveHlGaWVsZCo+KGZpZWxkKS0+c2VydmVySWRlbnRpZmllcigpOwogICAgIHVp
bnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFuY2VQcm94eS0+bmV4dFJlcXVlc3RJRCgpOwpAQCAt
NDM0LDEwICs0MzQsMTEgQEAgdm9pZCBQcm94eUluc3RhbmNlOjpzZXRGaWVsZFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkLCBKU1ZhbHVlIHYKICAgICBpZiAobV9pbnN0
YW5jZVByb3h5KQogICAgICAgICBtX2luc3RhbmNlUHJveHktPnJlbGVhc2VMb2NhbE9iamVjdCh2
YWx1ZSk7CiAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgd2FpdEZvclJlcGx5PE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXF1ZXN0SUQpOwogICAgIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFByb3h5SW5zdGFuY2U6OmludmFsaWRhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCmluZGV4IGE5MDViM2RmMGI2OGFjNDhlZTJmYTFmY2YyYTg3ZjAzMTVh
YmQ3YmQuLmQ1NjFhZTE0OGMyMmY1OTdkN2YxYWU4NGNiN2QwZGY5MWMwY2EwYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAKQEAgLTI5NywyNyArMjk3LDI3IEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK2Jvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBK
U0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVj
dCkgewogICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgTlBJZGVudGlmaWVyIG5w
SWRlbnRpZmllciA9IG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSk7CiAg
ICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFucElkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlm
ICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSB8fCAhdGhpc09i
amVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSh0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0LCBucElkZW50aWZpZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdGhyb3cg
YW4gZXhjZXB0aW9uIGhlcmU/Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdC0+X2NsYXNzLT5zZXRQ
cm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBO
UFZhcmlhbnQgdmFyaWFudDsKICAgICB0aGlzT2JqZWN0LT5tX29iamVjdE1hcC0+Y29udmVydEpT
VmFsdWVUb05QVmFyaWFudChleGVjLCB2YWx1ZSwgdmFyaWFudCk7CkBAIC0zMjcsOSArMzI3LDEw
IEBAIHZvaWQgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgLy8gdGhlIGNhbGwgaGFzIGZpbmlzaGVk
LgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHByb3RlY3Rvcih0aGlz
T2JqZWN0LT5tX29iamVjdE1hcCk7CiAKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIHsK
ICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFz
ZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+
c2V0UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFu
dCk7CisgICAgICAgIHJlc3VsdCA9IHRoaXNPYmplY3QtPm1fbnBPYmplY3QtPl9jbGFzcy0+c2V0
UHJvcGVydHkodGhpc09iamVjdC0+bV9ucE9iamVjdCwgbnBJZGVudGlmaWVyLCAmdmFyaWFudCk7
CiAKICAgICAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVj
U3RhdGUoZXhlYyk7CiAKQEAgLTMzNyw2ICszMzgsNyBAQCB2b2lkIEpTTlBPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SgogICAgIH0KIAogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmdmFyaWFudCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCmluZGV4IGE2YmJmN2M4N2M0Yzk4YTQ2Y2U1OWVjZWZiMzY2MGUwN2VhYjI0ZTYuLjhi
YWZlYjA2MGEyMTA2NmQ4ZWFhNjA4NzRjMDNhYzk5ZjBjZjRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApA
QCAtODUsNyArODUsNyBAQCBjbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QgewogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyB2b2lkIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NGYwZGZmOWZmNzI0
NjhlODlmZGUzNGI3NDZjYmYzNDA3ODk2MThiLi4yMTlkZDM1MzRhODg1YjViYjhjYTVhZWQyY2Q1
ODhlODkzNjA4YjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDMtMTEgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50
IFJlZmxlY3Quc2V0IHdpdGhvdXQgcmVjZWl2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDI0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vcmVmbGVjdC1zZXQtb250by1k
b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vcmVmbGVjdC1zZXQtb250
by1kb20uaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0
LXNldC1vbnRvLWRvbS5qczogQWRkZWQuCisKIDIwMTYtMDMtMTEgIEZyZWRlcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNraXAgY29udGVudC1lZGl0YWJsZS1hcy10ZXh0
YXJlYS5odG1sIG9uIEdUSyBhcyBpdCB1c2VzIEFYIEFQSS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9yZWZsZWN0LXNldC1vbnRvLWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9kb20vcmVmbGVjdC1zZXQtb250by1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
NmQ0OGQ1MmUyMDZmYjY2MGU2NWE2YmUyYzE1NGQ4NjNjMmY4MmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQtb250by1kb20tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNzMgQEAKK1Rlc3QgZW5zdXJlcyBSZWZsZWN0LnNldCBmdW5jdGlvbmFsaXR5IHdp
dGggRE9NIG9iamVjdHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDdXN0b21B
Y2Nlc3NvciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4gVGhlc2Ugc2V0dGVycyBhcmUgdHJlYXRl
ZCBhcyBzZXR0ZXJzIGluIEVDTUEyNjIuIFJlZmxlY3Quc2V0IHJldHVybnMgdHJ1ZSBiZWNhdXNl
IGEgc2V0dGVyIGlzIGZvdW5kLgorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LCAic2Ny
b2xsVG9wIiwgIiNIZWxsbyIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9k
eSwgInNjcm9sbFRvcCIpIGlzIG5vdCAiI0hlbGxvIgorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVu
dC5ib2R5LCAic2Nyb2xsVG9wIiwgMCkgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LmdldChkb2N1bWVu
dC5ib2R5LCAic2Nyb2xsVG9wIikgaXMgMAorQ3VzdG9tQWNjZXNzb3Igd2l0aCBSZWFkT25seQor
UEFTUyBSZWZsZWN0LnNldChkb2N1bWVudCwgImNvbXBhdE1vZGUiLCBmYWxzZSkgaXMgZmFsc2UK
K1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQsICJjb21wYXRNb2RlIikgaXMgIkJhY2tDb21wYXQi
CitDdXN0b21BY2Nlc3NvciB3aXRob3V0IHNldHRlciBmb3IgRE9NIG9iamVjdHMKK1BBU1MgUmVm
bGVjdC5zZXQod2luZG93Lmhpc3RvcnksICJsZW5ndGgiLCAiaHR0cDovL3d3dy5leGFtcGxlLmNv
bSIpIGlzIGZhbHNlCitQQVNTIFJlZmxlY3QuZ2V0KHdpbmRvdy5oaXN0b3J5LCAibGVuZ3RoIikg
aXMgbm90ICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIgorQ3VzdG9tVmFsdWUgc2V0dGVycy4KK1BB
U1MgUmVmbGVjdC5zZXQod2luZG93LCAiRXZlbnQiLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIp
IGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQod2luZG93LCAiRXZlbnQiKSBpcyAiaHR0cDovL3d3
dy5leGFtcGxlLmNvbSIKK0N1c3RvbVZhbHVlIHNldHRlcnMgd2l0aCB3cml0YWJsZT1mYWxzZS4K
K1BBU1MgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICJNb3VzZUV2ZW50IiwgeworICAg
IHdyaXRhYmxlOiBmYWxzZQorfSkgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LnNldCh3aW5kb3csICJN
b3VzZUV2ZW50IiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKSBpcyBmYWxzZQorUEFTUyBSZWZs
ZWN0LmdldCh3aW5kb3csICJNb3VzZUV2ZW50IikgaXMgb3JpZ2luYWxNb3VzZUV2ZW50CitwdXRE
ZWxlZ2F0ZSBDdXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4KK1BBU1MgUmVm
bGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIiwgIiNIZWxsbyIpIGlzIHRydWUKK1BB
U1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIikgaXMgIiNIZWxsbyIKK1BB
U1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIiwgIiNPVVQiKSBpcyB0cnVl
CitQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0aW9uLCAiaGFzaCIpIGlzICIjT1VUIgor
UEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5sb2NhdGlvbiwgMCwgIiNIZWxsbyIpIGlzIHRydWUK
K1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sIDApIGlzICIjSGVsbG8iCitQQVNT
IFJlZmxlY3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAwLCAiI09VVCIpIGlzIHRydWUKK1BBU1Mg
UmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sIDApIGlzICIjT1VUIgorcHV0RGVsZWdhdGUg
Q3VzdG9tQWNjZXNzb3Igd2l0aG91dCBzZXR0ZXIgZm9yIERPTSBvYmplY3RzCitQQVNTIFJlZmxl
Y3Quc2V0KGRvY3VtZW50LmxvY2F0aW9uLCAib3JpZ2luIiwgImh0dHA6Ly93d3cuZXhhbXBsZS5j
b20iKSBpcyBmYWxzZQorTlBBUEkgb2JqZWN0IHdpdGggUmVmbGVjdC5zZXQKK1BBU1MgUmVmbGVj
dC5zZXQobnBvYmplY3QsICJDb2NvYSIsICJTd2VldCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5n
ZXQobnBvYmplY3QsICJDb2NvYSIpIGlzICJTd2VldCIKK1BBU1MgUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eShucG9iamVjdCwgIkNvY29hIiwgeworICAgIHdyaXRhYmxlOiBmYWxzZQorfSkgaXMgdHJ1
ZQorUEFTUyBSZWZsZWN0LnNldChucG9iamVjdCwgIkNvY29hIiwgIkhlbGxvIikgaXMgZmFsc2UK
K1BBU1MgUmVmbGVjdC5nZXQobnBvYmplY3QsICJDb2NvYSIpIGlzICJTd2VldCIKK1BBU1MgUmVm
bGVjdC5zZXQobnBvYmplY3QsIDAsICJTd2VldCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQo
bnBvYmplY3QsIDApIGlzICJTd2VldCIKK1BBU1MgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShucG9i
amVjdCwgMCwgeworICAgIHdyaXRhYmxlOiBmYWxzZQorfSkgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0
LnNldChucG9iamVjdCwgMCwgIkhlbGxvIikgaXMgZmFsc2UKK1BBU1MgUmVmbGVjdC5nZXQobnBv
YmplY3QsIDApIGlzICJTd2VldCIKK0RPTVN0cmluZ01hcAorUEFTUyBSZWZsZWN0LmdldChkb2N1
bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJjYXBwdWNjaW5vIgorUEFTUyBSZWZsZWN0
LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIsICJzd2VldCIpIGlzIHRydWUKK1BB
U1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKSBpcyAic3dlZXQi
CitQQVNTIFJlZmxlY3Quc2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hLWNhcHB1Y2Np
bm8iLCAic3dlZXQiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhj
ZXB0aW9uIDEyLgorUEFTUyBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDAsICJz
d2VldCIpIGlzIHRydWUKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAw
KSBpcyAic3dlZXQiCitDdXN0b21JbmRleGVkU2V0dGVyCitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVj
dCwgMCkudmFsdWUgaXMgImNvY29hIgorUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgi
KSBpcyAzCitQQVNTIFJlZmxlY3Quc2V0KHNlbGVjdCwgMCwgb3B0aW9uKSBpcyB0cnVlCitQQVNT
IFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkudmFsdWUgaXMgIm1vY2hhIgorUEFTUyBSZWZsZWN0Lmdl
dChzZWxlY3QsICJsZW5ndGgiKSBpcyAzCitQQVNTIFJlZmxlY3Quc2V0KHNlbGVjdCwgNDIsIG9w
dGlvbikgaXMgdHJ1ZQorUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKSBpcyA0Mgor
UEFTUyBSZWZsZWN0LnNldChzZWxlY3QsIDQ0LCBvcHRpb24yKSBpcyB0cnVlCitQQVNTIFJlZmxl
Y3QuZ2V0KHNlbGVjdCwgNDQpLnZhbHVlIGlzICJraWxpbWFuamFybyIKK1BBU1MgUmVmbGVjdC5z
ZXQoc2VsZWN0LCAyMCwgIktpbGltYW5qYXJvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBl
TWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVj
dC1zZXQtb250by1kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWI3MzZiMTNlOGFmMDY5MTYzNGZiMmIw
YmU1ZDMyMzUxMDdlODA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Jl
ZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZW1iZWQgaWQ9InRlc3RQbHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0
LXRlc3QtbmV0c2NhcGUiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48L2VtYmVkPgorPHNlbGVj
dCBpZD0idGVzdFNlbGVjdCI+CisgICAgPG9wdGlvbiB2YWx1ZT0iY29jb2EiPkNvY29hPC9vcHRp
b24+CisgICAgPG9wdGlvbiB2YWx1ZT0iY2FwcHVjY2lubyIgc2VsZWN0ZWQ+Q2FwcHVjY2lubzwv
b3B0aW9uPgorICAgIDxvcHRpb24gdmFsdWU9Im1hdGNoYSI+TWF0Y2hhPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1kb20uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0LXNldC1vbnRvLWRvbS5qcyBiL0xheW91dFRlc3RzL2pz
L2RvbS9zY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1kb20uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc2
OTY0NGZjOTNmZjIwYmQ0N2I3YjEzZmViNDI2ZTNmZDkwNGYzMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1kb20uanMK
QEAgLTAsMCArMSw4NiBAQAorZGVzY3JpcHRpb24oIlRlc3QgZW5zdXJlcyBSZWZsZWN0LnNldCBm
dW5jdGlvbmFsaXR5IHdpdGggRE9NIG9iamVjdHMuIik7CisKK2RlYnVnKCJDdXN0b21BY2Nlc3Nv
ciBzZXR0ZXJzIGZvciBET00gb2JqZWN0cy4gVGhlc2Ugc2V0dGVycyBhcmUgdHJlYXRlZCBhcyBz
ZXR0ZXJzIGluIEVDTUEyNjIuIFJlZmxlY3Quc2V0IHJldHVybnMgdHJ1ZSBiZWNhdXNlIGEgc2V0
dGVyIGlzIGZvdW5kLiIpOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KGRvY3VtZW50LmJvZHksICJz
Y3JvbGxUb3AiLCAiI0hlbGxvIilgLCBgdHJ1ZWApOworc2hvdWxkTm90QmUoYFJlZmxlY3QuZ2V0
KGRvY3VtZW50LmJvZHksICJzY3JvbGxUb3AiKWAsIGAiI0hlbGxvImApOworc2hvdWxkQmUoYFJl
ZmxlY3Quc2V0KGRvY3VtZW50LmJvZHksICJzY3JvbGxUb3AiLCAwKWAsIGB0cnVlYCk7CitzaG91
bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keSwgInNjcm9sbFRvcCIpYCwgYDBgKTsKKwor
ZGVidWcoIkN1c3RvbUFjY2Vzc29yIHdpdGggUmVhZE9ubHkiKTsKK3Nob3VsZEJlKGBSZWZsZWN0
LnNldChkb2N1bWVudCwgImNvbXBhdE1vZGUiLCBmYWxzZSlgLCBgZmFsc2VgKTsKK3Nob3VsZEJl
KGBSZWZsZWN0LmdldChkb2N1bWVudCwgImNvbXBhdE1vZGUiKWAsIGAiQmFja0NvbXBhdCJgKTsK
KworZGVidWcoIkN1c3RvbUFjY2Vzc29yIHdpdGhvdXQgc2V0dGVyIGZvciBET00gb2JqZWN0cyIp
Oworc2hvdWxkQmUoYFJlZmxlY3Quc2V0KHdpbmRvdy5oaXN0b3J5LCAibGVuZ3RoIiwgImh0dHA6
Ly93d3cuZXhhbXBsZS5jb20iKWAsIGBmYWxzZWApOworc2hvdWxkTm90QmUoYFJlZmxlY3QuZ2V0
KHdpbmRvdy5oaXN0b3J5LCAibGVuZ3RoIilgLCBgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iYCk7
CisKK2RlYnVnKCJDdXN0b21WYWx1ZSBzZXR0ZXJzLiIpOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0
KHdpbmRvdywgIkV2ZW50IiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKWAsIGB0cnVlYCk7Citz
aG91bGRCZShgUmVmbGVjdC5nZXQod2luZG93LCAiRXZlbnQiKWAsICBgImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20iYCk7CisKK2RlYnVnKCJDdXN0b21WYWx1ZSBzZXR0ZXJzIHdpdGggd3JpdGFibGU9
ZmFsc2UuIik7Cit2YXIgb3JpZ2luYWxNb3VzZUV2ZW50ID0gTW91c2VFdmVudDsKK3Nob3VsZEJl
KGBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIk1vdXNlRXZlbnQiLCB7CisgICAgd3Jp
dGFibGU6IGZhbHNlCit9KWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQod2luZG93
LCAiTW91c2VFdmVudCIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIilgLCBgZmFsc2VgKTsKK3No
b3VsZEJlKGBSZWZsZWN0LmdldCh3aW5kb3csICJNb3VzZUV2ZW50IilgLCBgb3JpZ2luYWxNb3Vz
ZUV2ZW50YCk7CisKK2RlYnVnKCJwdXREZWxlZ2F0ZSBDdXN0b21BY2Nlc3NvciBzZXR0ZXJzIGZv
ciBET00gb2JqZWN0cy4iKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChkb2N1bWVudC5sb2NhdGlv
biwgImhhc2giLCAiI0hlbGxvIilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KGRv
Y3VtZW50LmxvY2F0aW9uLCAiaGFzaCIpYCwgYCIjSGVsbG8iYCk7CitzaG91bGRCZShgUmVmbGVj
dC5zZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIiwgIiNPVVQiKWAsIGB0cnVlYCk7CitzaG91
bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sICJoYXNoIilgLCBgIiNPVVQiYCk7
CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sIDAsICIjSGVsbG8iKWAs
IGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQubG9jYXRpb24sIDApYCwg
YCIjSGVsbG8iYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQubG9jYXRpb24sIDAs
ICIjT1VUIilgLCBgdHJ1ZWApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmxvY2F0
aW9uLCAwKWAsIGAiI09VVCJgKTsKKworZGVidWcoInB1dERlbGVnYXRlIEN1c3RvbUFjY2Vzc29y
IHdpdGhvdXQgc2V0dGVyIGZvciBET00gb2JqZWN0cyIpOworc2hvdWxkQmUoYFJlZmxlY3Quc2V0
KGRvY3VtZW50LmxvY2F0aW9uLCAib3JpZ2luIiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKWAs
IGBmYWxzZWApOworCitkZWJ1ZygiTlBBUEkgb2JqZWN0IHdpdGggUmVmbGVjdC5zZXQiKTsKK3Zh
ciBucG9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UGx1Z2luIik7CitzaG91
bGRCZShgUmVmbGVjdC5zZXQobnBvYmplY3QsICJDb2NvYSIsICJTd2VldCIpYCwgYHRydWVgKTsK
K3Nob3VsZEJlKGBSZWZsZWN0LmdldChucG9iamVjdCwgIkNvY29hIilgLCBgIlN3ZWV0ImApOwor
c2hvdWxkQmUoYFJlZmxlY3QuZGVmaW5lUHJvcGVydHkobnBvYmplY3QsICJDb2NvYSIsIHsKKyAg
ICB3cml0YWJsZTogZmFsc2UKK30pYCwgYHRydWVgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChu
cG9iamVjdCwgIkNvY29hIiwgIkhlbGxvIilgLCBgZmFsc2VgKTsKK3Nob3VsZEJlKGBSZWZsZWN0
LmdldChucG9iamVjdCwgIkNvY29hIilgLCBgIlN3ZWV0ImApOworc2hvdWxkQmUoYFJlZmxlY3Qu
c2V0KG5wb2JqZWN0LCAwLCAiU3dlZXQiKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVmbGVjdC5n
ZXQobnBvYmplY3QsIDApYCwgYCJTd2VldCJgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmRlZmluZVBy
b3BlcnR5KG5wb2JqZWN0LCAwLCB7CisgICAgd3JpdGFibGU6IGZhbHNlCit9KWAsIGB0cnVlYCk7
CitzaG91bGRCZShgUmVmbGVjdC5zZXQobnBvYmplY3QsIDAsICJIZWxsbyIpYCwgYGZhbHNlYCk7
CitzaG91bGRCZShgUmVmbGVjdC5nZXQobnBvYmplY3QsIDApYCwgYCJTd2VldCJgKTsKKworZGVi
dWcoIkRPTVN0cmluZ01hcCIpOworZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoImRhdGEtY29j
b2EiLCAiY2FwcHVjY2lubyIpOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHku
ZGF0YXNldCwgImNvY29hIilgLCBgImNhcHB1Y2Npbm8iYCk7CitzaG91bGRCZShgUmVmbGVjdC5z
ZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiLCAic3dlZXQiKWAsIGB0cnVlYCk7Citz
aG91bGRCZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKWAsIGAi
c3dlZXQiYCk7CitzaG91bGRUaHJvdyhgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0
LCAiY29jb2EtY2FwcHVjY2lubyIsICJzd2VldCIpYCk7CitzaG91bGRCZShgUmVmbGVjdC5zZXQo
ZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwLCAic3dlZXQiKWAsIGB0cnVlYCk7CitzaG91bGRCZShg
UmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwKWAsIGAic3dlZXQiYCk7CisKK2Rl
YnVnKCJDdXN0b21JbmRleGVkU2V0dGVyIik7Cit2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RTZWxlY3QiKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChzZWxlY3QsIDAp
LnZhbHVlYCwgYCJjb2NvYSJgKTsKK3Nob3VsZEJlKGBSZWZsZWN0LmdldChzZWxlY3QsICJsZW5n
dGgiKWAsIGAzYCk7Cit2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9u
Iik7CitvcHRpb24udmFsdWUgPSAibW9jaGEiOworb3B0aW9uLnRleHRDb250ZW50ID0gIk1vY2hh
IjsKK3Nob3VsZEJlKGBSZWZsZWN0LnNldChzZWxlY3QsIDAsIG9wdGlvbilgLCBgdHJ1ZWApOwor
c2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkudmFsdWVgLCBgIm1vY2hhImApOworc2hv
dWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwgImxlbmd0aCIpYCwgYDNgKTsKK3Nob3VsZEJlKGBS
ZWZsZWN0LnNldChzZWxlY3QsIDQyLCBvcHRpb24pYCwgYHRydWVgKTsKK3Nob3VsZEJlKGBSZWZs
ZWN0LmdldChzZWxlY3QsICJsZW5ndGgiKWAsIGA0MmApOyAgLy8gVXBkYXRlIHZhbGlkaXR5IHBy
ZXZlbnQgdXMgdG8gaW5zZXJ0IGR1cGxpY2F0ZSBvcHRpb25zLgorCit2YXIgb3B0aW9uMiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworb3B0aW9uMi52YWx1ZSA9ICJraWxpbWFu
amFybyI7CitvcHRpb24yLnRleHRDb250ZW50ID0gIktpbGltYW5qYXJvIjsKK3Nob3VsZEJlKGBS
ZWZsZWN0LnNldChzZWxlY3QsIDQ0LCBvcHRpb24yKWAsIGB0cnVlYCk7CitzaG91bGRCZShgUmVm
bGVjdC5nZXQoc2VsZWN0LCA0NCkudmFsdWVgLCBgImtpbGltYW5qYXJvImApOworc2hvdWxkVGhy
b3coYFJlZmxlY3Quc2V0KHNlbGVjdCwgMjAsICJLaWxpbWFuamFybyIpYCk7Cg==
</data>
<flag name="review"
          id="298271"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>