<?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>60933</bug_id>
          
          <creation_ts>2011-05-16 16:34:47 -0700</creation_ts>
          <short_desc>Global object initialization is expensive</short_desc>
          <delta_ts>2011-05-17 20:26:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>60944</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ap</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>404813</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 16:34:47 -0700</bug_when>
    <thetext>Global object initialization is expensive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404820</commentid>
    <comment_count>1</comment_count>
      <attachid>93713</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 16:44:07 -0700</bug_when>
    <thetext>Created attachment 93713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404822</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-16 16:46:55 -0700</bug_when>
    <thetext>Attachment 93713 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/BooleanPrototype.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/ArrayConstructor.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/StringConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/RegExpPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/ErrorPrototype.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 29 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>404828</commentid>
    <comment_count>3</comment_count>
      <attachid>93713</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-16 17:07:17 -0700</bug_when>
    <thetext>Comment on attachment 93713
Patch

Attachment 93713 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8704145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404912</commentid>
    <comment_count>4</comment_count>
      <attachid>93713</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-05-16 19:49:30 -0700</bug_when>
    <thetext>Comment on attachment 93713
Patch

Attachment 93713 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8708075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404917</commentid>
    <comment_count>5</comment_count>
      <attachid>93733</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 20:01:12 -0700</bug_when>
    <thetext>Created attachment 93733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404918</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 20:01:28 -0700</bug_when>
    <thetext>New patch for the EWS bots to chew on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404920</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-16 20:03:21 -0700</bug_when>
    <thetext>Attachment 93733 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/BooleanPrototype.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/ArrayConstructor.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/StringConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/RegExpPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/ErrorPrototype.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 34 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>404921</commentid>
    <comment_count>8</comment_count>
      <attachid>93733</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 20:04:17 -0700</bug_when>
    <thetext>Comment on attachment 93733
Patch

Marking r+ to get this out of the review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404928</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-16 21:08:26 -0700</bug_when>
    <thetext>Committed r86653: &lt;http://trac.webkit.org/changeset/86653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404933</commentid>
    <comment_count>10</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-05-16 22:02:53 -0700</bug_when>
    <thetext>Your change caused a lot of regressions on Windows bots:
http://build.webkit.org/builders/Windows%20XP%20Debug%20%28Tests%29/builds/28715
http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/12917

(And your change seems to be reviewed by yourself, which I don&apos;t know is the right thing to do.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404941</commentid>
    <comment_count>11</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-05-16 22:59:27 -0700</bug_when>
    <thetext>Other bots are also failing (EFL compile, Leopard/Snow Leopard tests), so I&apos;m going to roll out this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404953</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-16 23:21:32 -0700</bug_when>
    <thetext>Are we talking about a few nanoseconds per engine instance (ignoring worker threads for a moment), or about something significant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404954</commentid>
    <comment_count>13</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-05-16 23:25:51 -0700</bug_when>
    <thetext>Rollout patch has landed. I appreciate your understanding about keeping our bots green.

Error details:

Windows
http://build.webkit.org/builders/Windows%20XP%20Debug%20%28Tests%29/builds/28715 (Layout test crashes, jscore-test 962 failures)

Leopard, SnowLeopard
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/29391 (Sputnik failures)

EFL
http://build.webkit.org/builders/EFL%20Linux%20Release%20%28Build%29/builds/14457 (Compile error)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405468</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-17 19:40:10 -0700</bug_when>
    <thetext>Committed r86727: &lt;http://trac.webkit.org/changeset/86727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405480</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-17 20:26:05 -0700</bug_when>
    <thetext>Looks like the EFL builder is broken. I filed https://bugs.webkit.org/show_bug.cgi?id=61018 to track that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93713</attachid>
            <date>2011-05-16 16:44:07 -0700</date>
            <delta_ts>2011-05-16 20:01:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60933-20110516164406.patch</filename>
            <type>text/plain</type>
            <size>86530</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODY2MzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDExLTA1LTE2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2xvYmFsIG9iamVjdCBp
bml0aWFsaXphdGlvbiBpcyBleHBlbnNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwOTMzCisgICAgICAgIAorICAgICAgICBDaGFuZ2VkIGEgYnVu
Y2ggb2YgZ2xvYmFscyB0byBhbGxvY2F0ZSB0aGVpciBwcm9wZXJ0aWVzIGxhemlseSwgYW5kIGNo
YW5nZWQKKyAgICAgICAgdGhlIGdsb2JhbCBvYmplY3QgdG8gYWxsb2NhdGUgYSBidW5jaCBvZiBp
dHMgZ2xvYmFscyBsYXppbHkuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGZv
b3RwcmludCBvZiBhIGdsb2JhbCBvYmplY3QgZnJvbSAyODcgb2JqZWN0cyB3aXRoIDU4CisgICAg
ICAgIGZ1bmN0aW9ucyBmb3IgMjRLIHRvIDE3MyBvYmplY3RzIHdpdGggMjAgZnVuY3Rpb25zIGZv
ciAxNUsuCisKKyAgICAgICAgTGFyZ2UgcGF0Y2gsIGJ1dCBpdCdzIGFsbCBtZWNoYW5pY2FsLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5leHA6IEJ1aWxkIQorCisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6IEFkZGVkIGEgc3Bl
Y2lhbCBjYXNlIGZvciBmcm9tQ2hhckNvZGUsIHNpbmNlIGl0IHVzZXMKKyAgICAgICAgYSBjdXN0
b20gInRodW5rIGdlbmVyYXRvciIuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpUeXBlQ291bnRlcjo6b3BlcmF0b3IoKSk6IEZpeGVkIGEgYnVnIHdoZXJlIHRoZSB0
eXBlIGNvdW50ZXIgd291bGQKKyAgICAgICAgb3ZlcmNvdW50IG9iamVjdHMgdGhhdCB3ZXJlIG93
bmVkIHRocm91Z2ggbW9yZSB0aGFuIG9uZSBtZWNoYW5pc20gYmVjYXVzZQorICAgICAgICBpdCB3
YXMgZ2V0dGluZyBpbiB0aGUgd2F5IG9mIGNvdW50aW5nIHRoZSByZXN1bHRzIGZvciB0aGlzIHBh
dGNoLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcnJheVByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpib29s
ZWFuUHJvdG90eXBlVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmRhdGVDb25zdHJ1
Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjplcnJvclByb3RvdHlwZVRhYmxl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpyZWdF
eHBQcm90b3R5cGVUYWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3Ry
dWN0b3JUYWJsZSk6IEFkZGVkIG5ldyB0YWJsZXMuCisKKyAgICAgICAgKiBydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6Qm9v
bGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Qm9vbGVh
blByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhblByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKTogU3RhbmRhcmRpemVkIHRoZXNlIG9iamVjdHMKKyAgICAgICAgdG8g
dXNlIHN0YXRpYyB0YWJsZXMgZm9yIGZ1bmN0aW9uIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNH
bG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOiBBZGRlZCBuZXcgdGFibGVzLgorCisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRTdGF0
aWNHbG9iYWxzKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6IENoYW5nZWQgSlNHbG9iYWxPYmplY3QgdG8gdXNlIGEK
KyAgICAgICAgc3RhdGljIHRhYmxlIGZvciBpdHMgZ2xvYmFsIGZ1bmN0aW9ucy4gVGhpcyByZXF1
aXJlZCB1bmlubGluaW5nIHNvbWUKKyAgICAgICAgdGhpbmdzIHRvIGF2b2lkIGEgY2lyY3VsYXIg
aGVhZGVyIGRlcGVuZGVuY3kuIEhvd2V2ZXIsIHRob3NlIHRoaW5ncworICAgICAgICBwcm9iYWJs
eSBzaG91bGRuJ3QgaGF2ZSBiZWVuIGlubGluZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAg
ICAKKyAgICAgICAgRXZlbiBtb3JlIGdsb2JhbCBvYmplY3QgcHJvcGVydGllcyBjYW4gYmUgbWFk
ZSBsYXp5LCBidXQgdGhhdCByZXF1aXJlcworICAgICAgICBtb3JlIGluLWRlcHRoIGNoYW5nZXMu
CisKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok51bWJl
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6T2JqZWN0UHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpwdXQpOgorICAgICAgICAoSlND
OjpPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IFN0YW5kYXJkaXplZCB0aGVz
ZSBvYmplY3RzCisgICAgICAgIHRvIHVzZSBzdGF0aWMgdGFibGVzIGZvciBmdW5jdGlvbiBwcm9w
ZXJ0aWVzLgorCiAyMDExLTA1LTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNjA5MTM+IEMrKyBleGNlcHRpb25zIHNo
b3VsZCBub3QgYmUgZW5hYmxlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbGx2bS1nY2MtNC4yCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gODY1
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTkgKzM1LDI4IEBAIFZQQVRIID0gXAogCiAuUEhPTlkgOiBhbGwKIGFs
bCA6IFwKKyAgICBBcnJheUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBBcnJheVByb3RvdHlwZS5s
dXQuaCBcCisgICAgQm9vbGVhblByb3RvdHlwZS5sdXQuaCBcCisgICAgRGF0ZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKKyAgICBFcnJvclByb3RvdHlwZS5s
dXQuaCBcCiAgICAgSGVhZGVyRGV0ZWN0aW9uLmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAog
ICAgIEphdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NC5leHAgXAogICAgIEphdmFTY3JpcHRDb3Jl
LkpTVkFMVUU2NC5leHAgXAorICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKICAgICBMZXhlci5s
dXQuaCBcCiAgICAgTWF0aE9iamVjdC5sdXQuaCBcCiAgICAgTnVtYmVyQ29uc3RydWN0b3IubHV0
LmggXAorICAgIE51bWJlclByb3RvdHlwZS5sdXQuaCBcCiAgICAgT2JqZWN0Q29uc3RydWN0b3Iu
bHV0LmggXAorICAgIE9iamVjdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVnRXhwQ29uc3RydWN0
b3IubHV0LmggXAorICAgIFJlZ0V4cFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVnRXhwSml0VGFi
bGVzLmggXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCisgICAgU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5o
dG1sIFwKICMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
cmV2aXNpb24gODY1MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDEzIEBAIF9fWk4zSlNDMTRKU0dsb2Jh
bE9iamVjdDExZGlzYWJsZUV2YWxFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVH
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBf
X1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEz
dmlzaXRDaGlsZHJlbkVSTlNfOU1hcmtTdGFja0UKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE2
YWRkU3RhdGljR2xvYmFsc0VQTlMwXzE4R2xvYmFsUHJvcGVydHlJbmZvRWkKIF9fWk4zSlNDMTRK
U0dsb2JhbE9iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFTlNfN0pTVmFsdWVFagorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MThnZXRPd25Q
cm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVy
dHlTbG90RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlw
dG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFICAKIF9fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCitfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3Q2c19pbmZvRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0RDJFdgogX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0bndFbVBOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDMTRNYWNoaW5lVGhy
ZWFkczE2YWRkQ3VycmVudFRocmVhZEV2CkBAIC0yMTcsOCArMjIxLDggQEAgX19aTjNKU0MyNEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdEMyRVJOUwogX19aTjNKU0MyNGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjVldmFsdWF0ZUluR2xvYmFsQ2FsbEZy
YW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19a
TjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFs
RGF0YUUKLV9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
a0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVSS05TXzdBcmdMaXN0RVJLTlNf
MTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0MzTmFORQorX19aTjNKU0M0MWNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrRVBOU185RXhlY1N0YXRlRVBO
U18xNEpTR2xvYmFsT2JqZWN0RVJLTlNfN0FyZ0xpc3RFUktOU18xMElkZW50aWZpZXJFUktOU183
VVN0cmluZ0VpCiBfX1pOM0pTQzRIZWFwMTZhY3Rpdml0eUNhbGxiYWNrRXYKIF9fWk4zSlNDNEhl
YXAxNmFsbG9jYXRlU2xvd0Nhc2VFbQogX19aTjNKU0M0SGVhcDE2b2JqZWN0VHlwZUNvdW50c0V2
CkBAIC0zNzUsMTAgKzM3OSwxMCBAQCBfX1pOM1dURjEwZmFzdFN0ckR1cEVQS2MKIF9fWk4zV1RG
MTFPU0FsbG9jYXRvcjE2cmVzZXJ2ZUFuZENvbW1pdEVtTlMwXzVVc2FnZUViYgogX19aTjNXVEYx
MU9TQWxsb2NhdG9yMThyZWxlYXNlRGVjb21taXR0ZWRFUHZtCiBfX1pOM1dURjExY29tbWVudEF0
b21FCi1fX1pOM1dURjExZW1wdHlTdHJpbmdFdgogX19aTjNXVEYxMWN1cnJlbnRUaW1lRXYKIF9f
Wk4zV1RGMTFkdG9hUm91bmREUEVQY2RpUmJSaVJqCiBfX1pOM1dURjExZHRvYVJvdW5kU0ZFUGNk
aVJiUmlSagorX19aTjNXVEYxMWVtcHR5U3RyaW5nRXYKIF9fWk4zV1RGMTFmYXN0UmVhbGxvY0VQ
dm0KIF9fWk4zV1RGMTJBdG9taWNTdHJpbmcxMWFkZFNsb3dDYXNlRVBOU18xMFN0cmluZ0ltcGxF
CiBfX1pOM1dURjEyQXRvbWljU3RyaW5nMTZmcm9tVVRGOEludGVybmFsRVBLY1MyXwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQkocmV2aXNpb24gODY1MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkK
QEAgLTI4NCw2ICsyODQsOSBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICBpZiAoJGtleSBlcSAi
cG93IikgewogICAgICAgICAgICAgJHRodW5rR2VuZXJhdG9yID0gInBvd1RodW5rR2VuZXJhdG9y
IjsKICAgICAgICAgfQorICAgICAgICBpZiAoJGtleSBlcSAiZnJvbUNoYXJDb2RlIikgeworICAg
ICAgICAgICAgJHRodW5rR2VuZXJhdG9yID0gImZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yIjsK
KyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgKGlu
dHB0cl90KSIgLiAkY2FzdFN0ciAuICIoJGZpcnN0VmFsdWUpLCAoaW50cHRyX3QpJHNlY29uZFZh
bHVlIFRIVU5LX0dFTkVSQVRPUigkdGh1bmtHZW5lcmF0b3IpIH0sXG4iOwogICAgICAgICAkaSsr
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiA4
NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAg
LTMxMyw2ICszMTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHR5cGVO
YW1lKEpTQ2VsbCopOwogICAgIE93blB0cjxUeXBlQ291bnRTZXQ+IG1fdHlwZUNvdW50U2V0Owor
ICAgIEhhc2hTZXQ8SlNDZWxsKj4gbV9jZWxsczsKIH07CiAKIGlubGluZSBUeXBlQ291bnRlcjo6
VHlwZUNvdW50ZXIoKQpAQCAtMzM5LDYgKzM0MCw4IEBAIGlubGluZSBjb25zdCBjaGFyKiBUeXBl
Q291bnRlcjo6dHlwZU5hbWUKIAogaW5saW5lIHZvaWQgVHlwZUNvdW50ZXI6Om9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKQogeworICAgIGlmICghbV9jZWxscy5hZGQoY2VsbCkuc2Vjb25kKQorICAg
ICAgICByZXR1cm47CiAgICAgbV90eXBlQ291bnRTZXQtPmFkZCh0eXBlTmFtZShjZWxsKSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NSwxNSArNzUsMjQgQEAg
bmFtZXNwYWNlIEpTQyAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgdm9pZCBkdW1wQ2FsbGVy
KCk7CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogYXJyYXlUYWJsZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYXJy
YXlUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBhcnJheUNvbnN0cnVj
dG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLmFycmF5Q29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlKiBhcnJheVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5hcnJheVByb3RvdHlwZVRhYmxlOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGJvb2xlYW5Qcm90b3R5cGVUYWJsZShDYWxsRnJhbWUq
IGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYm9vbGVhblByb3Rv
dHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGRhdGVUYWJsZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZGF0
ZVRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGRhdGVDb25zdHJ1Y3Rv
clRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5kYXRlQ29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBlcnJvclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKS5lcnJvclByb3RvdHlwZVRhYmxlOyB9CisgICAgICAgIHN0
YXRpYyBjb25zdCBIYXNoVGFibGUqIGdsb2JhbE9iamVjdFRhYmxlKENhbGxGcmFtZSogY2FsbEZy
YW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5nbG9iYWxPYmplY3RUYWJsZTsg
fQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBqc29uVGFibGUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmpzb25UYWJsZTsgfQog
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBtYXRoVGFibGUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm1hdGhUYWJsZTsgfQotICAg
ICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJsZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubnVtYmVyVGFibGU7IH0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyQ29uc3RydWN0b3JUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubnVtYmVy
Q29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1i
ZXJQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCkubnVtYmVyUHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSogb2JqZWN0Q29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkub2JqZWN0Q29uc3RydWN0b3JUYWJs
ZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBvYmplY3RQcm90b3R5cGVUYWJs
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCku
b2JqZWN0UHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSog
cmVnRXhwVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLnJlZ0V4cFRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUq
IHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnJlZ0V4cENvbnN0cnVjdG9yVGFibGU7IH0KKyAgICAgICAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnJlZ0V4cFByb3RvdHlw
ZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHN0cmluZ1RhYmxlKENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5zdHJp
bmdUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdDb25zdHJ1
Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9CiAKICAgICAgICAgc3RhdGljIENhbGxG
cmFtZSogY3JlYXRlKFJlZ2lzdGVyKiBjYWxsRnJhbWVCYXNlKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDYWxsRnJhbWUqPihjYWxsRnJhbWVCYXNlKTsgfQogICAgICAgICBSZWdpc3RlciogcmVnaXN0
ZXJzKCkgeyByZXR1cm4gdGhpczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDg2NTIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENv
cHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpA
QCAtMzMsMjMgKzMzLDQzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEFycmF5Q29uc3RydWN0b3IpOwotICAgIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkoRXhlY1N0YXRlKik7CiAKLUFy
cmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorfQorCisj
aW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlIH07CisKKy8qIFNvdXJjZSBmb3IgQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGFy
cmF5Q29uc3RydWN0b3JUYWJsZQorICBpc0FycmF5ICAgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0FTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7CisKK0FycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgSWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNz
TmFtZSkpCiB7Ci0gICAgLy8gRUNNQSAxNS40LjMuMSBBcnJheS5wcm90b3R5cGUKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7Ci0KLSAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcgog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKK30KKworYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PElu
dGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKGV4
ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQogCi0gICAgLy8gRVM1Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5KSwgRG9udEVudW0pOwor
Ym9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxl
KGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCiBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKTsKQEAgLTcyLDcgKzkyLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MpKTsKIH0KIAotLy8gRUNNQSAxNS40LjIKIENv
bnN0cnVjdFR5cGUgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3I7CkBAIC04NSw3ICsxMDQsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgYXJncykpOwogfQogCi0v
LyBFQ01BIDE1LjYuMQogQ2FsbFR5cGUgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoQ2Fs
bERhdGEmIGNhbGxEYXRhKQogewogICAgIC8vIGVxdWl2YWxlbnQgdG8gJ25ldyBBcnJheSguLi4u
KScKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDcgKzI5LDIxIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFycmF5Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlwZSos
IFN0cnVjdHVyZSopOworICAgICAgICBBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQcm90b3R5cGUqKTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHZpcnR1YWwgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gODY1MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDEwICs4NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNOdW1l
cmljQ29tcGFyZUZ1bmN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJh
eVByb3RvdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5m
byBBcnJheVByb3RvdHlwZTo6c19pbmZvID0geyJBcnJheSIsICZKU0FycmF5OjpzX2luZm8sIDAs
IEV4ZWNTdGF0ZTo6YXJyYXlUYWJsZX07Citjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6
OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OmFycmF5
UHJvdG90eXBlVGFibGV9OwogCiAvKiBTb3VyY2UgZm9yIEFycmF5UHJvdG90eXBlLmx1dC5oCi1A
YmVnaW4gYXJyYXlUYWJsZSAxNgorQGJlZ2luIGFycmF5UHJvdG90eXBlVGFibGUgMTYKICAgdG9T
dHJpbmcgICAgICAgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlv
biAwCiAgIHRvTG9jYWxlU3RyaW5nIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgRG9udEVu
dW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBhcnJheVByb3RvRnVuY0NvbmNhdCAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTEyMywxMiArMTIzLDEyIEBAIEFycmF5UHJvdG90
eXBlOjpBcnJheVByb3RvdHlwZShKU0dsb2JhbE8KIAogYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxKU0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5VGFibGUoZXhlYyksIHRoaXMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxK
U0FycmF5PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjphcnJh
eVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjph
cnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXkgRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gODY1MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDI3ICsyOSw0NiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuUHJvdG90
eXBlKTsKLQotLy8gRnVuY3Rpb25zCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsK
IAotLy8gRUNNQSAxNS42LjQKK30KKworI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gQm9vbGVhblByb3RvdHlwZTo6
c19pbmZvID0geyAiQm9vbGVhbiIsICZCb29sZWFuT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0
ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlIH07CiAKLUJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Q
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKKy8qIFNv
dXJjZSBmb3IgQm9vbGVhblByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGJvb2xlYW5Qcm90b3R5cGVU
YWJsZQorICB0b1N0cmluZyAgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdmFsdWVPZiAgIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mICAgICBEb250RW51
bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xl
YW5Qcm90b3R5cGUpOworCitCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgOiBCb29sZWFuT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KQogewogICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc0Jvb2xlYW4o
ZmFsc2UpKTsKIAotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1
cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgYm9vbGVhblByb3RvRnVuY1Rv
U3RyaW5nKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJv
dG9GdW5jVmFsdWVPZiksIERvbnRFbnVtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OworICAgIHB1dEFub255bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBn
bG9iYWxPYmplY3QpOwogfQogCitib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8Qm9v
bGVhbk9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUoZXhlYyks
IHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Jvb2wgQm9v
bGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxCb29sZWFu
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZShleGVjKSwgdGhp
cywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KIAotLy8gRUNNQSAxNS42LjQuMiArIDE1
LjYuNC4zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
b2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lv
biA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0yNyw3ICsyNywyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEJvb2xlYW5Qcm90b3R5cGUgOiBwdWJsaWMgQm9vbGVhbk9iamVjdCB7CiAgICAgcHVibGljOgot
ICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEJvb2xlYW5Q
cm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKworICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAgICAgICB9CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJvb2xlYW5PYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0g
Qm9vbGVhbk9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gODY1MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTUxLDIyICs1MSw0MyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChEYXRlQ29uc3RydWN0b3IpOwot
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3Rh
dGUqKTsKIAotRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkK
K30KKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0
b3JUYWJsZSB9OworCisvKiBTb3VyY2UgZm9yIERhdGVDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2lu
IGRhdGVDb25zdHJ1Y3RvclRhYmxlCisgIHBhcnNlICAgICBkYXRlUGFyc2UgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIFVUQyAgICAgICBkYXRlVVRDICAgICBEb250RW51bXxGdW5jdGlvbiA3Cisg
IG5vdyAgICAgICBkYXRlTm93ICAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVDb25zdHJ1Y3Rvcik7CisKK0RhdGVDb25zdHJ1
Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90
b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUtPmNsYXNz
SW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZGF0ZVBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRl
KTsKK30KIAotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUs
IDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDcsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5VVEMsIGRhdGVVVEMpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLm5vdywgZGF0ZU5vdyksIERvbnRFbnVtKTsKK2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZUNvbnN0cnVjdG9y
VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CiAKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0
ZSk7Citib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3Jp
cHRvcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmRhdGVDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCiAvLyBFQ01B
IDE1LjkuMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMTEgKzI5LDI0IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRGF0ZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVy
ZSwgRGF0ZVByb3RvdHlwZSopOworICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CisKKyAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgfQorCisgICAgcHJvdGVj
dGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFn
czsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YShDYWxsRGF0YSYpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiAgICAgSlNP
YmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBB
cmdMaXN0Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0
LDQzIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUKIAogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqKTsKIAotLy8gRUNNQSAxNS45LjQKLUVycm9yUHJvdG90eXBlOjpFcnJvclByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorfQorCisjaW5jbHVk
ZSAiRXJyb3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gRXJyb3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkVycm9yIiwgJkVycm9ySW5zdGFuY2U6
OnNfaW5mbywgMCwgRXhlY1N0YXRlOjplcnJvclByb3RvdHlwZVRhYmxlIH07CisKKy8qIFNvdXJj
ZSBmb3IgRXJyb3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBlcnJvclByb3RvdHlwZVRhYmxlCisg
IHRvU3RyaW5nICAgICAgICAgIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9y
UHJvdG90eXBlKTsKKworRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgOiBFcnJvckluc3RhbmNlKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsK
LSAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBFcnJvckNvbnN0
cnVjdG9yJ3MgY29uc3RydWN0b3IKLQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKworICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CisgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7Cit9CisKK2Jvb2wgRXJyb3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJvclByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCitib29sIEVycm9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEVycm9ySW5zdGFu
Y2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZXJyb3JQcm90b3R5cGVUYWJsZShleGVjKSwgdGhpcywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1Ro
aXNPYmplY3QoZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
MjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1Ymxp
YyBFcnJvckluc3RhbmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSk7CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsKKyAgICAgICAgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBFcnJvckluc3RhbmNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IEVycm9ySW5zdGFuY2U6OkFub255bW91c1Nsb3RD
b3VudCArIDE7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIsMTUgKzkyLDI0
IEBAIGlubGluZSB2b2lkIFJlY29tcGlsZXI6Om9wZXJhdG9yKCkoSlNDZWwKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBhcnJheVRhYmxl
OworZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIGFycmF5Q29uc3RydWN0b3JU
YWJsZTsKK2V4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBhcnJheVByb3RvdHlw
ZVRhYmxlOworZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIGJvb2xlYW5Qcm90
b3R5cGVUYWJsZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBqc29uVGFi
bGU7CiBleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgZGF0ZVRhYmxlOworZXh0
ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIGRhdGVDb25zdHJ1Y3RvclRhYmxlOwor
ZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIGVycm9yUHJvdG90eXBlVGFibGU7
CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgZ2xvYmFsT2JqZWN0VGFibGU7
CiBleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgbWF0aFRhYmxlOwotZXh0ZXJu
IEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIG51bWJlclRhYmxlOworZXh0ZXJuIEpTQ19D
T05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIG51bWJlckNvbnN0cnVjdG9yVGFibGU7CitleHRlcm4g
SlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgbnVtYmVyUHJvdG90eXBlVGFibGU7CiBleHRl
cm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgb2JqZWN0Q29uc3RydWN0b3JUYWJsZTsK
K2V4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBvYmplY3RQcm90b3R5cGVUYWJs
ZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4
dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSByZWdFeHBDb25zdHJ1Y3RvclRhYmxl
OworZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHJlZ0V4cFByb3RvdHlwZVRh
YmxlOwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOwor
ZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHN0cmluZ0NvbnN0cnVjdG9yVGFi
bGU7CiAKIHZvaWQqIEpTR2xvYmFsRGF0YTo6anNBcnJheVZQdHI7CiB2b2lkKiBKU0dsb2JhbERh
dGE6OmpzQnl0ZUFycmF5VlB0cjsKQEAgLTE0NiwxNSArMTU1LDI0IEBAIHZvaWQgSlNHbG9iYWxE
YXRhOjpzdG9yZVZQdHJzKCkKIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlKQogICAg
IDogZ2xvYmFsRGF0YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCi0g
ICAgLCBhcnJheVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmFycmF5VGFibGUpKQorICAg
ICwgYXJyYXlDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmFycmF5Q29u
c3RydWN0b3JUYWJsZSkpCisgICAgLCBhcnJheVByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRh
YmxlPihKU0M6OmFycmF5UHJvdG90eXBlVGFibGUpKQorICAgICwgYm9vbGVhblByb3RvdHlwZVRh
YmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZSkpCiAgICAg
LCBkYXRlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6ZGF0ZVRhYmxlKSkKKyAgICAsIGRh
dGVDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmRhdGVDb25zdHJ1Y3Rv
clRhYmxlKSkKKyAgICAsIGVycm9yUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpT
Qzo6ZXJyb3JQcm90b3R5cGVUYWJsZSkpCisgICAgLCBnbG9iYWxPYmplY3RUYWJsZShmYXN0TmV3
PEhhc2hUYWJsZT4oSlNDOjpnbG9iYWxPYmplY3RUYWJsZSkpCiAgICAgLCBqc29uVGFibGUoZmFz
dE5ldzxIYXNoVGFibGU+KEpTQzo6anNvblRhYmxlKSkKICAgICAsIG1hdGhUYWJsZShmYXN0TmV3
PEhhc2hUYWJsZT4oSlNDOjptYXRoVGFibGUpKQotICAgICwgbnVtYmVyVGFibGUoZmFzdE5ldzxI
YXNoVGFibGU+KEpTQzo6bnVtYmVyVGFibGUpKQorICAgICwgbnVtYmVyQ29uc3RydWN0b3JUYWJs
ZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAs
IG51bWJlclByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlclByb3Rv
dHlwZVRhYmxlKSkKICAgICAsIG9iamVjdENvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNoVGFi
bGU+KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZSkpCisgICAgLCBvYmplY3RQcm90b3R5cGVU
YWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmplY3RQcm90b3R5cGVUYWJsZSkpCiAgICAg
LCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBUYWJsZSkpCiAgICAg
LCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnJlZ0V4cENv
bnN0cnVjdG9yVGFibGUpKQorICAgICwgcmVnRXhwUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNo
VGFibGU+KEpTQzo6cmVnRXhwUHJvdG90eXBlVGFibGUpKQogICAgICwgc3RyaW5nVGFibGUoZmFz
dE5ldzxIYXNoVGFibGU+KEpTQzo6c3RyaW5nVGFibGUpKQorICAgICwgc3RyaW5nQ29uc3RydWN0
b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKSkK
ICAgICAsIGlkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhy
ZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSA6IGNyZWF0ZUlkZW50aWZpZXJUYWJs
ZSgpKQogICAgICwgcHJvcGVydHlOYW1lcyhuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcykpCiAg
ICAgLCBlbXB0eUxpc3QobmV3IE1hcmtlZEFyZ3VtZW50QnVmZmVyKQpAQCAtMjc1LDI1ICsyOTMs
NDMgQEAgSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKICAgICBpbnRlcnByZXRlciA9IDA7
CiAjZW5kaWYKIAotICAgIGFycmF5VGFibGUtPmRlbGV0ZVRhYmxlKCk7CisgICAgYXJyYXlQcm90
b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBhcnJheUNvbnN0cnVjdG9yVGFibGUtPmRl
bGV0ZVRhYmxlKCk7CisgICAgYm9vbGVhblByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwog
ICAgIGRhdGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBkYXRlQ29uc3RydWN0b3JUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKKyAgICBlcnJvclByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwor
ICAgIGdsb2JhbE9iamVjdFRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIGpzb25UYWJsZS0+ZGVs
ZXRlVGFibGUoKTsKICAgICBtYXRoVGFibGUtPmRlbGV0ZVRhYmxlKCk7Ci0gICAgbnVtYmVyVGFi
bGUtPmRlbGV0ZVRhYmxlKCk7CisgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFi
bGUoKTsKKyAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBvYmpl
Y3RDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIG9iamVjdFByb3RvdHlwZVRh
YmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHJlZ0V4cFRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAg
IHJlZ0V4cENvbnN0cnVjdG9yVGFibGUtPmRlbGV0ZVRhYmxlKCk7CisgICAgcmVnRXhwUHJvdG90
eXBlVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgc3RyaW5nVGFibGUtPmRlbGV0ZVRhYmxlKCk7
CisgICAgc3RyaW5nQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAotICAgIGZhc3RE
ZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheVRhYmxlKSk7CisgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGFycmF5Q29uc3RydWN0b3JUYWJsZSkpOworICAgIGZh
c3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheVByb3RvdHlwZVRhYmxlKSk7Cisg
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGJvb2xlYW5Qcm90b3R5cGVUYWJs
ZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihkYXRlVGFibGUpKTsK
KyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oZGF0ZUNvbnN0cnVjdG9yVGFi
bGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oZXJyb3JQcm90b3R5
cGVUYWJsZSkpOworICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihnbG9iYWxP
YmplY3RUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihqc29u
VGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4obWF0aFRhYmxl
KSk7Ci0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclRhYmxlKSk7
CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlckNvbnN0cnVjdG9y
VGFibGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4obnVtYmVyUHJv
dG90eXBlVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2Jq
ZWN0Q29uc3RydWN0b3JUYWJsZSkpOworICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFi
bGUqPihvYmplY3RQcm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihyZWdFeHBUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNo
VGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9j
YXN0PEhhc2hUYWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShj
b25zdF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ1RhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25z
dF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKTsKIAogICAgIGRlbGV0
ZSBwYXJzZXI7CiAgICAgZGVsZXRlIGxleGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
NiwxNSArMTM2LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBHbG9iYWxEYXRhVHlwZSBn
bG9iYWxEYXRhVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKIAotICAgICAg
ICBjb25zdCBIYXNoVGFibGUqIGFycmF5VGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
YXJyYXlDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIGFycmF5UHJv
dG90eXBlVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogYm9vbGVhblByb3RvdHlwZVRh
YmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIGRhdGVUYWJsZTsKKyAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiBkYXRlQ29uc3RydWN0b3JUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiBlcnJvclByb3RvdHlwZVRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIGdsb2JhbE9i
amVjdFRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIGpzb25UYWJsZTsKICAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiBtYXRoVGFibGU7Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSogbnVt
YmVyVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyQ29uc3RydWN0b3JUYWJs
ZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJQcm90b3R5cGVUYWJsZTsKICAgICAg
ICAgY29uc3QgSGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25z
dCBIYXNoVGFibGUqIG9iamVjdFByb3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFi
bGUqIHJlZ0V4cFRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cENvbnN0cnVj
dG9yVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwUHJvdG90eXBlVGFibGU7
CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogc3RyaW5nVGFibGU7CisgICAgICAgIGNvbnN0IEhh
c2hUYWJsZSogc3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKICAgICAgICAgCiAgICAgICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gYWN0aXZhdGlvblN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDg2NTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPTk9i
amVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiTWF0aE9iamVjdC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlwZS5oIgpAQCAtNjgsOCArNjksMjcgQEAK
ICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCisKIG5hbWVzcGFjZSBKU0MgewogCitjb25z
dCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZO
dW1iZXJPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSB9Owor
CisvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5oCitAYmVnaW4gZ2xvYmFsT2JqZWN0
VGFibGUKKyAgcGFyc2VJbnQgICAgICAgICAgICAgIGdsb2JhbEZ1bmNQYXJzZUludCAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBwYXJzZUZsb2F0ICAgICAgICAgICAgZ2xvYmFs
RnVuY1BhcnNlRmxvYXQgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGlzTmFOICAg
ICAgICAgICAgICAgICBnbG9iYWxGdW5jSXNOYU4gICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgaXNGaW5pdGUgICAgICAgICAgICAgIGdsb2JhbEZ1bmNJc0Zpbml0ZSAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBlc2NhcGUgICAgICAgICAgICAgICAgZ2xv
YmFsRnVuY0VzY2FwZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHVuZXNj
YXBlICAgICAgICAgICAgICBnbG9iYWxGdW5jVW5lc2NhcGUgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgZGVjb2RlVVJJICAgICAgICAgICAgIGdsb2JhbEZ1bmNEZWNvZGVVUkkg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBkZWNvZGVVUklDb21wb25lbnQgICAg
Z2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGVu
Y29kZVVSSSAgICAgICAgICAgICBnbG9iYWxGdW5jRW5jb2RlVVJJICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZW5jb2RlVVJJQ29tcG9uZW50ICAgIGdsb2JhbEZ1bmNFbmNvZGVV
UklDb21wb25lbnQgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChKU0dsb2JhbE9iamVjdCk7CiAKIC8vIERlZmF1bHQgbnVtYmVyIG9m
IHRpY2tzIGJlZm9yZSBhIHRpbWVvdXQgY2hlY2sgc2hvdWxkIGJlIGRvbmUuCkBAIC0xNjcsOCAr
MTg3LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogewogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCk7CiAKLSAgICAv
LyBQcm90b3R5cGVzCi0KICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVs
bCgpKSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90
b3R5cGUgaXMgY3JlYXRlZC4KICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwpAQCAtMTc3LDcgKzE5NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0
KEpTVmFsdWUgcHJvdG8KICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3Bl
cnRpZXMoZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlv
biwgJmFwcGx5RnVuY3Rpb24pOwogICAgIG1fY2FsbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwotICAgIG1fb2JqZWN0UHJvdG90
eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgT2JqZWN0UHJvdG90
eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwganNOdWxsKCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAg
bV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVj
KSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkpKTsKICAgICBtX2Z1bmN0aW9uUHJv
dG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBtX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpKTsKQEAgLTE5NSwzMiArMjEzLDMy
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX3N0cmlu
Z1Byb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFN0cmlu
Z1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fc3Ry
aW5nT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cmluZ09i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJpbmdQcm90b3R5
cGUuZ2V0KCkpKTsKIAotICAgIG1fYm9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVh
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAgbV9ib29s
ZWFuUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgQm9v
bGVhblByb3RvdHlwZShleGVjLCB0aGlzLCBCb29sZWFuUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBt
X2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQm9v
bGVhbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9ib29sZWFu
UHJvdG90eXBlLmdldCgpKSk7CiAKLSAgICBtX251bWJlclByb3RvdHlwZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE51bWJlclByb3RvdHlwZShleGVjLCB0aGlzLCBO
dW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIG1f
bnVtYmVyUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
TnVtYmVyUHJvdG90eXBlKGV4ZWMsIHRoaXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAg
bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTnVt
YmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX251bWJlclBy
b3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9kYXRlUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlzLCBEYXRlUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBtX2RhdGVTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgRGF0ZUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2RhdGVQcm90b3R5cGUuZ2V0KCkpKTsKIAotICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgUmVnRXhwUHJvdG90eXBlKGV4ZWMs
IHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7
CisgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBS
ZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fcmVnRXhw
UHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX21ldGhvZENhbGxEdW1teS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBFcnJv
clByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkp
OworICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgRXJyb3JQ
cm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9lcnJvclN0
cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclByb3RvdHlwZSkpOwogCiAgICAg
Ly8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gbmV3IChl
eGVjKSBPYmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIEpT
Q2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQXJyYXlDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwg
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1Y3Rv
ciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBtX3N0cmluZ1Byb3RvdHlw
ZS5nZXQoKSk7CisgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJh
eUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5
UHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChl
eGVjKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGJvb2xlYW5Db25zdHJ1
Y3RvciA9IG5ldyAoZXhlYykgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEJvb2xlYW5D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxs
KiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTnVtYmVyQ29uc3RydWN0b3IoZXhlYywg
dGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX251bWJlclByb3RvdHlwZS5nZXQoKSk7
Ci0gICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIERhdGVDb25zdHJ1Y3Rv
cihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCBtX2RhdGVQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVj
dG9yID0gbmV3IChleGVjKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9kYXRlUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVnRXhwQ29uc3Ry
dWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBDb25z
dHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJv
dG90eXBlLmdldCgpKSk7CiAKQEAgLTI0NSwxMCArMjYzLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CiAgICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogCi0gICAgLy8gU2V0IGdsb2Jh
bCBjb25zdHJ1Y3RvcnMKLQotICAgIC8vIEZJWE1FOiBUaGVzZSBwcm9wZXJ0aWVzIGNvdWxkIGJl
IGhhbmRsZWQgYnkgYSBzdGF0aWMgaGFzaCB0YWJsZS4KLQogICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJP
YmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiRnVuY3Rpb24iKSwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJBcnJheSIpLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0yNjUs
NyArMjc5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAg
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9y
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKIAotICAgIC8vIFNldCBnbG9iYWwgdmFsdWVz
LgorICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAo
ZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG1fZXZhbEZ1bmN0aW9uLmdldCgp
LCBEb250RW51bSk7CisKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0g
ewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiTWF0aCIpLCBu
ZXcgKGV4ZWMpIE1hdGhPYmplY3QoZXhlYywgdGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlKSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIo
ZXhlYywgIk5hTiIpLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CkBAIC0yNzMsMjcgKzI4OSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgInVuZGVm
aW5lZCIpLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5l
dyAoZXhlYykgSlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERv
bnREZWxldGUpCiAgICAgfTsKLQogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
V1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAKLSAgICAvLyBTZXQgZ2xvYmFsIGZ1
bmN0aW9ucy4KLQotICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwpKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG1fZXZhbEZ1bmN0
aW9uLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0
cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRpZmllcihleGVjLCAicGFyc2VJbnQiKSwgZ2xvYmFsRnVu
Y1BhcnNlSW50KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFs
RnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5j
dGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNOYU4iKSwgZ2xvYmFs
RnVuY0lzTmFOKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzRmluaXRlIiksIGdsb2JhbEZ1
bmNJc0Zpbml0ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9u
U3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVu
Y0VzY2FwZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJ1bmVzY2FwZSIpLCBnbG9iYWxGdW5j
VW5lc2NhcGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0
cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJIiksIGdsb2JhbEZ1
bmNEZWNvZGVVUkkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJQ29tcG9uZW50
IiksIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVj
LCAiZW5jb2RlVVJJIiksIGdsb2JhbEZ1bmNFbmNvZGVVUkkpLCBEb250RW51bSk7Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAiZW5jb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQp
LCBEb250RW51bSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImpzY3ByaW50IiksIGds
b2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVtKTsKLSNlbmRpZgotCiAgICAgcmVzZXRQcm90b3R5
cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpOwogfQogCkBAIC00NDQsNiArNDQxLDQy
IEBAIHZvaWQqIEpTR2xvYmFsT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6ZV8KICAgICByZXR1cm4g
Z2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0ZShzaXplKTsKIH0KIAordm9pZCBKU0dsb2JhbE9iamVj
dDo6YWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qIGdsb2JhbHMsIGludCBjb3Vu
dCkKK3sKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IG1fcmVnaXN0ZXJBcnJheVNpemU7CisgICAgc2l6
ZV90IG5ld1NpemUgPSBvbGRTaXplICsgY291bnQ7CisgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFy
cmllcjxVbmtub3duPltuZXdTaXplXSk7CisgICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgeworICAg
ICAgICAvLyBtZW1jcHkgaXMgc2FmZSBoZXJlIGFzIHdlJ3JlIGNvcHlpbmcgYmFycmllcnMgd2Ug
YWxyZWFkeSBvd24gZnJvbSB0aGUgZXhpc3RpbmcgYXJyYXkKKyAgICAgICAgbWVtY3B5KHJlZ2lz
dGVyQXJyYXkuZ2V0KCkgKyBjb3VudCwgbV9yZWdpc3RlckFycmF5LmdldCgpLCBvbGRTaXplICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBy
ZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgbmV3U2l6ZTsKKyAgICBzZXRSZWdpc3Rl
cnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSwgbmV3U2l6ZSk7CisKKyAgICBm
b3IgKGludCBpID0gMCwgaW5kZXggPSAtc3RhdGljX2Nhc3Q8aW50PihvbGRTaXplKSAtIDE7IGkg
PCBjb3VudDsgKytpLCAtLWluZGV4KSB7CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyYgZ2xv
YmFsID0gZ2xvYmFsc1tpXTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5hdHRyaWJ1dGVzICYgRG9u
dERlbGV0ZSk7CisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGdsb2Jh
bC5hdHRyaWJ1dGVzKTsKKyAgICAgICAgc3ltYm9sVGFibGUoKS5hZGQoZ2xvYmFsLmlkZW50aWZp
ZXIuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChnbG9i
YWxEYXRhKCksIHRoaXMsIGdsb2JhbC52YWx1ZSk7CisgICAgfQorfQorCitib29sIEpTR2xvYmFs
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xvYmFs
T2JqZWN0VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBzeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworfQorCitib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEpTVmFyaWFibGVPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUo
ZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBzeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
OworfQorCiBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGU6OkR5bmFtaWNHbG9iYWxPYmplY3RTY29w
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFs
T2JqZWN0KQogICAgIDogbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdChnbG9iYWxEYXRhLmR5bmFt
aWNHbG9iYWxPYmplY3QpCiAgICAgLCBtX3NhdmVkRHluYW1pY0dsb2JhbE9iamVjdChtX2R5bmFt
aWNHbG9iYWxPYmplY3RTbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2
ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGluaXQodGhpcyk7CiAgICAg
ICAgIH0KIAorICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKICAgICAgICAgICAg
IDogSlNWYXJpYWJsZU9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxl
LCAwKQpAQCAtMzA4LDQyICszMTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9yZWdp
c3RlckFycmF5U2l6ZSA9IGNvdW50OwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTR2xvYmFs
T2JqZWN0OjphZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyogZ2xvYmFscywgaW50
IGNvdW50KQotICAgIHsKLSAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBtX3JlZ2lzdGVyQXJyYXlT
aXplOwotICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNpemUgKyBjb3VudDsKLSAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0
QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltuZXdTaXplXSk7Ci0gICAgICAgIGlm
IChtX3JlZ2lzdGVyQXJyYXkpIHsKLSAgICAgICAgICAgIC8vIG1lbWNweSBpcyBzYWZlIGhlcmUg
YXMgd2UncmUgY29weWluZyBiYXJyaWVycyB3ZSBhbHJlYWR5IG93biBmcm9tIHRoZSBleGlzdGlu
ZyBhcnJheQotICAgICAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBjb3VudCwg
bV9yZWdpc3RlckFycmF5LmdldCgpLCBvbGRTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lz
dGVyQXJyYXkuZ2V0KCkgKyBuZXdTaXplOwotICAgICAgICBzZXRSZWdpc3RlcnMocmVnaXN0ZXJz
LCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSwgbmV3U2l6ZSk7Ci0KLSAgICAgICAgZm9yIChpbnQg
aSA9IDAsIGluZGV4ID0gLXN0YXRpY19jYXN0PGludD4ob2xkU2l6ZSkgLSAxOyBpIDwgY291bnQ7
ICsraSwgLS1pbmRleCkgewotICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvJiBnbG9iYWwg
PSBnbG9iYWxzW2ldOwotICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5hdHRyaWJ1dGVzICYgRG9u
dERlbGV0ZSk7Ci0gICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBn
bG9iYWwuYXR0cmlidXRlcyk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZSgpLmFkZChnbG9iYWwu
aWRlbnRpZmllci5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICAgICAgICAgIHJlZ2lzdGVyQXQoaW5k
ZXgpLnNldChnbG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbC52YWx1ZSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAoSlNWYXJpYWJsZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgaWYg
KHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIEpTVmFyaWFibGVPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwotICAgIH0KLQog
ICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lv
biA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDEzICs1ODcsNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvVVN0cmluZygpKSk7CiB9CiAKLSNpZm5kZWYg
TkRFQlVHCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNKU0NQcmludChF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ1N0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS51dGY4KCk7Ci0gICAgcHV0cyhzdHJpbmcuZGF0YSgpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotI2VuZGlmCi0KIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiA4NjUyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEV4ZWNT
dGF0ZSopOwogICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2Fw
ZShFeGVjU3RhdGUqKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNVbmVzY2FwZShFeGVjU3RhdGUqKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSlNDUHJpbnQoRXhlY1N0YXRlKik7Ci0jZW5kaWYK
IAogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWFudGlzc2FPdmVyZmxvd0xvd2VyQm91bmQgPSA5
MDA3MTk5MjU0NzQwOTkyLjA7CiAgICAgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgY2hh
ciosIGludCBsZW5ndGgsIGludCByYWRpeCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24gODY1MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTks
OCArNTksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoCiAKIG5h
bWVzcGFjZSBKU0MgewogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTWF0aE9i
amVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBjb25zdCBDbGFzc0luZm8g
TWF0aE9iamVjdDo6c19pbmZvID0geyAiTWF0aCIsICZKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6
OnNfaW5mbywgMCwgRXhlY1N0YXRlOjptYXRoVGFibGUgfTsKIAogLyogU291cmNlIGZvciBNYXRo
T2JqZWN0Lmx1dC5oCkBAIC0xMDEsOCArOTksNiBAQCBNYXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYywgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKLS8vIEVDTUEgMTUuOAot
CiBib29sIE1hdGhPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6
bWF0aFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gODY1MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwLDIwMDMgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00MiwxMCArNDIsMTAgQEAg
c3RhdGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZQogCiBuYW1lc3BhY2UgSlND
IHsKIAotY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6bnVtYmVyVGFi
bGUgfTsKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om51bWJlckNv
bnN0cnVjdG9yVGFibGUgfTsKIAogLyogU291cmNlIGZvciBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQu
aAotQGJlZ2luIG51bWJlclRhYmxlCitAYmVnaW4gbnVtYmVyQ29uc3RydWN0b3JUYWJsZQogICAg
TmFOICAgICAgICAgICAgICAgICAgIG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUgICAgICAgRG9u
dEVudW18RG9udERlbGV0ZXxSZWFkT25seQogICAgTkVHQVRJVkVfSU5GSU5JVFkgICAgIG51bWJl
ckNvbnN0cnVjdG9yTmVnSW5maW5pdHkgICAgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seQog
ICAgUE9TSVRJVkVfSU5GSU5JVFkgICAgIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkgICAg
RG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seQpAQCAtNjgsMTIgKzY4LDEyIEBAIE51bWJlckNv
bnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihFeGUKIAogYm9vbCBOdW1iZXJDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxOdW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhl
Y1N0YXRlOjpudW1iZXJUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1
bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFs
RnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyVGFibGUoZXhlYyksIHRoaXMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRv
cjxOdW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpu
dW1iZXJDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA4NjUy
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwLDIwMDMgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1BU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlclByb3RvdHlwZSk7Ci0KIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOwpAQCAtNDMs
MjcgKzQxLDQ4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWIKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25l
bnRpYWwoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIAotLy8gRUNNQSAxNS43LjQK
K30KKworI2luY2x1ZGUgIk51bWJlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk51bWJlciIs
ICZOdW1iZXJPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpudW1iZXJQcm90b3R5cGVUYWJs
ZSB9OworCisvKiBTb3VyY2UgZm9yIE51bWJlclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIG51bWJl
clByb3RvdHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgIG51bWJlclByb3RvRnVuY1RvU3Ry
aW5nICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b0xvY2FsZVN0cmluZyAgICBudW1i
ZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFsdWVP
ZiAgICAgICAgICAgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZiAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIHRvRml4ZWQgICAgICAgICAgIG51bWJlclByb3RvRnVuY1RvRml4ZWQgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b0V4cG9uZW50aWFsICAgICBudW1iZXJQcm90b0Z1
bmNUb0V4cG9uZW50aWFsICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdG9QcmVjaXNpb24gICAg
ICAgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24gICAgICBEb250RW51bXxGdW5jdGlvbiAxCitA
ZW5kCisqLwogCi1OdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChO
dW1iZXJQcm90b3R5cGUpOworCitOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIDogTnVtYmVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KQogewogICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcigw
KSk7CiAKLSAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIg
TnVtYmVyQ29uc3RydWN0b3IgaGFzIGJlZW4gY29uc3RydWN0ZWQKKyAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOworICAgIHB1dEFub255bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOworfQorCitib29sIE51bWJlclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFi
bGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CiAKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudG9TdHJpbmcsIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0
aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZywgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVj
dHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YsIG51bWJlclByb3RvRnVuY1Zh
bHVlT2YpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
blN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvRml4ZWQsIG51bWJlclByb3Rv
RnVuY1RvRml4ZWQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvRXhwb25lbnRpYWws
IG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnRvUHJlY2lzaW9uLCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiksIERvbnRFbnVtKTsK
K2Jvb2wgTnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9y
PE51bWJlck9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpudW1iZXJQcm90b3R5cGVUYWJsZShleGVj
KSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotLy8gRUNNQSAxNS43LjQuMiAtIDE1LjcuNC43Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgdG9UaGlzTnVtYmVyKEpTVmFsdWUgdGhpc1ZhbHVlLCBkb3VibGUgJngpCiB7CiAgICAgSlNW
YWx1ZSB2ID0gdGhpc1ZhbHVlLmdldEpTTnVtYmVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAkocmV2aXNpb24gODY1MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0yNyw3ICsyNywyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bWJlclByb3Rv
dHlwZSA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVy
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworCisgICAgICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOworCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgTnVtYmVyT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IE51bWJlck9iamVjdDo6QW5v
bnltb3VzU2xvdENvdW50ICsgMTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gODY1MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTI4LDggKzI4LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoT2JqZWN0UHJvdG90eXBlKTsKLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKQEAgLTQwLDI3ICszOCw0MiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi1PYmplY3RQcm90b3R5cGU6Ok9iamVjdFBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCit9CisKKyNp
bmNsdWRlICJPYmplY3RQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25G
aW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlIH07
CisKKy8qIFNvdXJjZSBmb3IgT2JqZWN0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gb2JqZWN0UHJv
dG90eXBlVGFibGUKKyAgdG9TdHJpbmcgICAgICAgICAgICAgIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3RyaW5n
ICAgICAgICBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgICAgICAgb2JqZWN0UHJvdG9GdW5jVmFsdWVP
ZiAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgaGFzT3duUHJvcGVydHkg
ICAgICAgIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5ICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHByb3BlcnR5SXNFbnVtZXJhYmxlICBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0
eUlzRW51bWVyYWJsZSAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBpc1Byb3RvdHlwZU9mICAg
ICAgICAgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgX19kZWZpbmVHZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlciAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIF9fZGVmaW5lU2V0dGVyX18g
ICAgICBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorICBfX2xvb2t1cEdldHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0
dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgX19sb29rdXBTZXR0ZXJfXyAg
ICAgIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCitAZW5kCisqLworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE9iamVjdFByb3Rv
dHlwZSk7CisKK09iamVjdFByb3RvdHlwZTo6T2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHVjdHVyZSkKICAg
ICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHVjdHVyZSkKICAgICAs
IG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzKHRydWUpCiB7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJpbmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1
Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNW
YWx1ZU9mKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSwgb2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3Ry
dWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcm90b3R5cGVPZiwgb2JqZWN0UHJv
dG9GdW5jSXNQcm90b3R5cGVPZiksIERvbnRFbnVtKTsKLQotICAgIC8vIE1vemlsbGEgZXh0ZW5z
aW9ucwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDIs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNE
ZWZpbmVHZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fZGVmaW5lU2V0dGVy
X18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuX19sb29rdXBHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKSwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUs
IDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cFNldHRlcl9fLCBvYmplY3RQcm90b0Z1
bmNMb29rdXBTZXR0ZXIpLCBEb250RW51bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKKyAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgMCwg
Z2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBPYmplY3RQcm90b3R5cGU6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgSlNOb25GaW5hbE9iamVjdDo6cHV0KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCiAgICAgaWYgKG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJ
bnQzMk5hbWVzKSB7CiAgICAgICAgIGJvb2wgaXNVSW50MzI7CkBAIC03MywxMiArODYsMjAgQEAg
Ym9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdAogewogICAgIGlmIChtX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgcmV0dXJuIEpTTm9uRmluYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitib29s
IE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVj
U3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQogCi0vLyBFQ01BIDE1LjIuNC4yLCAxNS4yLjQuNCwgMTUuMi40LjUsIDE1LjIuNC43
Citib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRv
cjxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxl
KGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
VmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gODY1MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNywx
MSArMjcsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGUg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IEpTTm9uRmluYWxPYmpl
Y3Q6OkFub255bW91c1Nsb3RDb3VudCArIDE7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1l
czsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA4NjUyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIy
ICszOCw0NSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChSZWdFeHBQcm90b3R5cGUpOwotCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNUZXN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIAotLy8gRUNNQSAxNS4xMC41Cit9CisKKyNpbmNsdWRl
ICJSZWdFeHBQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gUmVnRXhwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJSZWdFeHAiLCAmUmVnRXhwT2JqZWN0
OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUgfTsKKworLyogU291
cmNlIGZvciBSZWdFeHBQcm90b3R5cGUubHV0LmgKK0BiZWdpbiByZWdFeHBQcm90b3R5cGVUYWJs
ZQorICBjb21waWxlICAgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZSAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgZXhlYyAgICAgIHJlZ0V4cFByb3RvRnVuY0V4ZWMgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHRlc3QgICAgICByZWdFeHBQcm90b0Z1bmNUZXN0ICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCiAKLVJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCitBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKFJlZ0V4cFByb3RvdHlwZSk7CisKK1JlZ0V4cFByb3RvdHlwZTo6
UmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBSZWdFeHBPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIFJlZ0V4cDo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksICIiLCBO
b0ZsYWdzKSkKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0
dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhwUHJvdG9GdW5jQ29t
cGlsZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
U3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhlYywgcmVnRXhwUHJvdG9GdW5j
RXhlYyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
U3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudGVzdCwgcmVnRXhwUHJvdG9GdW5j
VGVzdCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
U3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHJlZ0V4cFByb3Rv
RnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CisgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIDAsIGds
b2JhbE9iamVjdCk7Cit9CisKK2Jvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PFJlZ0V4
cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5cGVUYWJsZShleGVjKSwgdGhp
cywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8UmVnRXhwT2JqZWN0PihleGVjLCBFeGVjU3Rh
dGU6OnJlZ0V4cFByb3RvdHlwZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDg2NTIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhw
UHJvdG90eXBlIDogcHVibGljIFJlZ0V4cE9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBS
ZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgUmVnRXhwUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gc19pbmZvOworCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgUmVnRXhwT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IFJlZ0V4cE9iamVjdDo6
QW5vbnltb3VzU2xvdENvdW50ICsgMTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDg2NTIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw0MyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4
ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTdHJpbmdDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3Rh
dGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUgfTsKKworLyogU291cmNlIGZvciBTdHJpbmdDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUKKyAgZnJvbUNoYXJD
b2RlICAgICAgICAgIHN0cmluZ0Zyb21DaGFyQ29kZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29uc3RydWN0
b3IpOworCitTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVy
KGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCit7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK2Jvb2wgU3RyaW5nQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpzdHJp
bmdDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQor
Citib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlw
dG9yPEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JU
YWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCiBzdGF0aWMgTkVWRVJfSU5MSU5FIEpTVmFsdWUgc3RyaW5nRnJvbUNo
YXJDb2RlU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKQEAgLTQ2LDI1ICs4Myw2IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0
cmluZ0Zyb21DaGFyQ29kZVNsb3dDYXNlKGV4ZWMpKTsKIH0KIAotQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChTdHJpbmdDb25zdHJ1Y3Rvcik7Ci0KLVN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBTdHJp
bmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhl
Yywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKLXsKLSAgICAvLyBF
Q01BIDE1LjUuMy4xIFN0cmluZy5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotCi0g
ICAgLy8gRUNNQSAxNS41LjMuMiBmcm9tQ2hhckNvZGUoKQotI2lmIEVOQUJMRShKSVQpICYmIEVO
QUJMRShKSVRfT1BUSU1JWkVfTkFUSVZFX0NBTEwpCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmZyb21DaGFy
Q29kZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihzdHJpbmdGcm9tQ2hhckNv
ZGUsIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKSksIERvbnRFbnVtKTsKLSNlbHNlCi0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVu
Y3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmZyb21DaGFyQ29kZSwgc3RyaW5nRnJvbUNoYXJDb2RlKSwgRG9udEVudW0p
OwotI2VuZGlmCi0gICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9u
dERlbGV0ZSk7Ci19Ci0KLS8vIEVDTUEgMTUuNS4yCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKQEAgLTc5LDcgKzk3LDYgQEAgQ29u
c3RydWN0VHlwZSBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0Q29ucwogICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKIH0KIAotLy8gRUNNQSAxNS41LjEKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDg2NTIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgU3RyaW5nQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVi
bGljOgotICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3Rv
dHlwZSopOworICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFN0cmluZ1Byb3RvdHlwZSopOwogCisgICAgICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gc19pbmZvOworCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisKKyAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93733</attachid>
            <date>2011-05-16 20:01:12 -0700</date>
            <delta_ts>2011-05-16 23:57:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60933-20110516200111.patch</filename>
            <type>text/plain</type>
            <size>98087</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDExLTA1LTE2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2xvYmFsIG9iamVjdCBp
bml0aWFsaXphdGlvbiBpcyBleHBlbnNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwOTMzCisgICAgICAgIAorICAgICAgICBDaGFuZ2VkIGEgYnVu
Y2ggb2YgZ2xvYmFscyB0byBhbGxvY2F0ZSB0aGVpciBwcm9wZXJ0aWVzIGxhemlseSwgYW5kIGNo
YW5nZWQKKyAgICAgICAgdGhlIGdsb2JhbCBvYmplY3QgdG8gYWxsb2NhdGUgYSBidW5jaCBvZiBp
dHMgZ2xvYmFscyBsYXppbHkuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGZv
b3RwcmludCBvZiBhIGdsb2JhbCBvYmplY3QgZnJvbSAyODcgb2JqZWN0cyB3aXRoIDU4CisgICAg
ICAgIGZ1bmN0aW9ucyBmb3IgMjRLIHRvIDE3MyBvYmplY3RzIHdpdGggMjAgZnVuY3Rpb25zIGZv
ciAxNUsuCisKKyAgICAgICAgTGFyZ2UgcGF0Y2gsIGJ1dCBpdCdzIGFsbCBtZWNoYW5pY2FsLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5leHA6IEJ1aWxkIQorCisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6IEFkZGVkIGEgc3Bl
Y2lhbCBjYXNlIGZvciBmcm9tQ2hhckNvZGUsIHNpbmNlIGl0IHVzZXMKKyAgICAgICAgYSBjdXN0
b20gInRodW5rIGdlbmVyYXRvciIuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpUeXBlQ291bnRlcjo6b3BlcmF0b3IoKSk6IEZpeGVkIGEgYnVnIHdoZXJlIHRoZSB0
eXBlIGNvdW50ZXIgd291bGQKKyAgICAgICAgb3ZlcmNvdW50IG9iamVjdHMgdGhhdCB3ZXJlIG93
bmVkIHRocm91Z2ggbW9yZSB0aGFuIG9uZSBtZWNoYW5pc20gYmVjYXVzZQorICAgICAgICBpdCB3
YXMgZ2V0dGluZyBpbiB0aGUgd2F5IG9mIGNvdW50aW5nIHRoZSByZXN1bHRzIGZvciB0aGlzIHBh
dGNoLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjphcnJheVByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpib29s
ZWFuUHJvdG90eXBlVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmRhdGVDb25zdHJ1
Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjplcnJvclByb3RvdHlwZVRhYmxl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpyZWdF
eHBQcm90b3R5cGVUYWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3Ry
dWN0b3JUYWJsZSk6IEFkZGVkIG5ldyB0YWJsZXMuCisKKyAgICAgICAgKiBydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6Qm9v
bGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Qm9vbGVh
blByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhblByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpEYXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6RXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICog
cnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKTogU3RhbmRhcmRpemVkIHRoZXNlIG9iamVjdHMKKyAgICAgICAgdG8g
dXNlIHN0YXRpYyB0YWJsZXMgZm9yIGZ1bmN0aW9uIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNH
bG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOiBBZGRlZCBuZXcgdGFibGVzLgorCisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRTdGF0
aWNHbG9iYWxzKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6IENoYW5nZWQgSlNHbG9iYWxPYmplY3QgdG8gdXNlIGEK
KyAgICAgICAgc3RhdGljIHRhYmxlIGZvciBpdHMgZ2xvYmFsIGZ1bmN0aW9ucy4gVGhpcyByZXF1
aXJlZCB1bmlubGluaW5nIHNvbWUKKyAgICAgICAgdGhpbmdzIHRvIGF2b2lkIGEgY2lyY3VsYXIg
aGVhZGVyIGRlcGVuZGVuY3kuIEhvd2V2ZXIsIHRob3NlIHRoaW5ncworICAgICAgICBwcm9iYWJs
eSBzaG91bGRuJ3QgaGF2ZSBiZWVuIGlubGluZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAg
ICAKKyAgICAgICAgRXZlbiBtb3JlIGdsb2JhbCBvYmplY3QgcHJvcGVydGllcyBjYW4gYmUgbWFk
ZSBsYXp5LCBidXQgdGhhdCByZXF1aXJlcworICAgICAgICBtb3JlIGluLWRlcHRoIGNoYW5nZXMu
CisKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok51bWJl
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6T2JqZWN0UHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpwdXQpOgorICAgICAgICAoSlND
OjpPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IFN0YW5kYXJkaXplZCB0aGVz
ZSBvYmplY3RzCisgICAgICAgIHRvIHVzZSBzdGF0aWMgdGFibGVzIGZvciBmdW5jdGlvbiBwcm9w
ZXJ0aWVzLgorCiAyMDExLTA1LTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNjA5MTM+IEMrKyBleGNlcHRpb25zIHNo
b3VsZCBub3QgYmUgZW5hYmxlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbGx2bS1nY2MtNC4yCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gODY2
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTkgKzM1LDI4IEBAIFZQQVRIID0gXAogCiAuUEhPTlkgOiBhbGwKIGFs
bCA6IFwKKyAgICBBcnJheUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBBcnJheVByb3RvdHlwZS5s
dXQuaCBcCisgICAgQm9vbGVhblByb3RvdHlwZS5sdXQuaCBcCisgICAgRGF0ZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKKyAgICBFcnJvclByb3RvdHlwZS5s
dXQuaCBcCiAgICAgSGVhZGVyRGV0ZWN0aW9uLmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAog
ICAgIEphdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NC5leHAgXAogICAgIEphdmFTY3JpcHRDb3Jl
LkpTVkFMVUU2NC5leHAgXAorICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKICAgICBMZXhlci5s
dXQuaCBcCiAgICAgTWF0aE9iamVjdC5sdXQuaCBcCiAgICAgTnVtYmVyQ29uc3RydWN0b3IubHV0
LmggXAorICAgIE51bWJlclByb3RvdHlwZS5sdXQuaCBcCiAgICAgT2JqZWN0Q29uc3RydWN0b3Iu
bHV0LmggXAorICAgIE9iamVjdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVnRXhwQ29uc3RydWN0
b3IubHV0LmggXAorICAgIFJlZ0V4cFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVnRXhwSml0VGFi
bGVzLmggXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCisgICAgU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5o
dG1sIFwKICMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnBybwko
cmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxNSArMTQsMjQgQEAgQ09ORklHKHN0YW5kYWxvbmVf
cGFja2FnZSkgewogfQogCiBMVVRfRklMRVMgKz0gXAorICAgIHJ1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAgXAogICAgIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAg
XAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvRXJyb3JQcm90
b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGlt
ZS9KU09OT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9NYXRoT2JqZWN0LmNwcCBcCiAgICAgcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcCBcCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
XAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBcCi0gICAgcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCisgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IFwKIAogS0VZV09SRExVVF9GSUxFUyArPSBcCiAgICAgcGFyc2VyL0tleXdvcmRzLnRhYmxlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4NjY0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ1LDE0ICsxNDUsMjYgQEAgRVhUUkFfRElTVCArPSBcCiAjIENsZWFuIHJ1bGVzIGZvciBKYXZh
U2NyaXB0Q29yZQogIyBGSVhNRTogU2hvdWxkIHRoaXMgbGlzdCBiZSBnZW5lcmF0ZWQgZnJvbSBq
YXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXM/CiBDTEVBTkZJTEVTICs9IFwKLQlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5sdXQuaCBcCi0JU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5sdXQuaCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5sdXQuaCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5sdXQuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QubHV0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL0xleGVy
Lmx1dC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvUmVnRXhwSml0VGFibGVzLmggXAorICAg
ICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmx1dC5o
IFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
bHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZVByb3RvdHlwZS5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0Lmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICAgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKKyAgICAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IubHV0Lmgg
XAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
bHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKIAlQcm9ncmFtcy9qc2MgXAog
CVByb2dyYW1zL2pzYy1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQCBcCiAJUHJvZ3JhbXMv
bWluaWRvbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEzLDE1ICsxMywyNCBAQCBqYXZhc2NyaXB0Y29yZV9o
X2FwaSArPSBcCiBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9MZXhlci5sdXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL1JlZ0V4
cEppdFRhYmxlcy5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5sdXQuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5sdXQuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5sdXQu
aCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5sdXQuaCBcCi0J
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAot
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwK
LQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBc
Ci0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0Lmx1dC5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUubHV0LmgKKyAgICAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCBc
CisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmx1
dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3Rv
dHlwZS5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgICAgIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5sdXQuaCBcCisgICAgICAg
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwK
KyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmx1
dC5oIFwKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUubHV0LmggXAorICAgICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgICAgIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5sdXQuaAogCiBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDg2NjQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDkgKzE1OSwxMyBAQCBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMWRpc2FibGVF
dmFsRXYKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lR2V0dGVyRVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU184SlNPYmplY3RFagogX19aTjNKU0MxNEpTR2xvYmFs
T2JqZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5T
XzhKU09iamVjdEVqCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5T
XzlNYXJrU3RhY2tFCitfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxNmFkZFN0YXRpY0dsb2JhbHNF
UE5TMF8xOEdsb2JhbFByb3BlcnR5SW5mb0VpCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxN3B1
dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1Zh
bHVlRWoKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlND
MTRKU0dsb2JhbE9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTRK
U0dsb2JhbE9iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pT
VmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RSAgCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0
aW5pdEVQTlNfOEpTT2JqZWN0RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0NnNfaW5mb0UKIF9f
Wk4zSlNDMTRKU0dsb2JhbE9iamVjdEQyRXYKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdG53RW1Q
TlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzE0TWFjaGluZVRocmVhZHMxNmFkZEN1cnJlbnRU
aHJlYWRFdgpAQCAtMjE3LDggKzIyMSw4IEBAIF9fWk4zSlNDMjRKU09iamVjdFdpdGhHbG9iYWxP
YmplY3RDMkVSTlMKIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFCiBfX1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5n
RVJOU183SlNWYWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCi1fX1pOM0pTQzQx
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2tFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFUktOU183QXJnTGlzdEVSS05TXzEwSWRlbnRpZmllckVSS05T
XzdVU3RyaW5nRWkKIF9fWk4zSlNDM05hTkUKK19fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVja0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVj
dEVSS05TXzdBcmdMaXN0RVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNK
U0M0SGVhcDE2YWN0aXZpdHlDYWxsYmFja0V2CiBfX1pOM0pTQzRIZWFwMTZhbGxvY2F0ZVNsb3dD
YXNlRW0KIF9fWk4zSlNDNEhlYXAxNm9iamVjdFR5cGVDb3VudHNFdgpAQCAtMzc1LDEwICszNzks
MTAgQEAgX19aTjNXVEYxMGZhc3RTdHJEdXBFUEtjCiBfX1pOM1dURjExT1NBbGxvY2F0b3IxNnJl
c2VydmVBbmRDb21taXRFbU5TMF81VXNhZ2VFYmIKIF9fWk4zV1RGMTFPU0FsbG9jYXRvcjE4cmVs
ZWFzZURlY29tbWl0dGVkRVB2bQogX19aTjNXVEYxMWNvbW1lbnRBdG9tRQotX19aTjNXVEYxMWVt
cHR5U3RyaW5nRXYKIF9fWk4zV1RGMTFjdXJyZW50VGltZUV2CiBfX1pOM1dURjExZHRvYVJvdW5k
RFBFUGNkaVJiUmlSagogX19aTjNXVEYxMWR0b2FSb3VuZFNGRVBjZGlSYlJpUmoKK19fWk4zV1RG
MTFlbXB0eVN0cmluZ0V2CiBfX1pOM1dURjExZmFzdFJlYWxsb2NFUHZtCiBfX1pOM1dURjEyQXRv
bWljU3RyaW5nMTFhZGRTbG93Q2FzZUVQTlNfMTBTdHJpbmdJbXBsRQogX19aTjNXVEYxMkF0b21p
Y1N0cmluZzE2ZnJvbVVURjhJbnRlcm5hbEVQS2NTMl8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02OTIsMTkg
KzY5MiwyNyBAQAogICAgICAgICAgICAgJ3lhcnIvWWFyclN5bnRheENoZWNrZXIuaCcsCiAgICAg
ICAgIF0sCiAgICAgICAgICdqYXZhc2NyaXB0Y29yZV9kZXJpdmVkX3NvdXJjZV9maWxlcyc6IFsK
KyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9MZXhlci5sdXQuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwSml0VGFibGVzLmgnLAorICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RyYWNpbmdEdHJhY2UuaCcs
CisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvQXJyYXlQcm90b3R5cGUubHV0LmgnLAorICAg
ICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Jv
b2xlYW5Qcm90b3R5cGUubHV0LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0RhdGVDb25zdHJ1Y3Rvci5sdXQuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRGF0ZVBy
b3RvdHlwZS5sdXQuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSGVhZGVyRGV0ZWN0aW9uLmgnLAorICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Vycm9yUHJvdG90eXBlLmx1
dC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCcsCi0gICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTGV4
ZXIubHV0LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL01hdGhPYmplY3QubHV0LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL051bWJlckNvbnN0cnVjdG9yLmx1dC5o
JywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9OdW1iZXJQcm90b3R5cGUubHV0LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmx1dC5oJywK
KyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9PYmplY3RQcm90b3R5cGUubHV0LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1JlZ0V4cENvbnN0cnVjdG9yLmx1dC5oJywKLSAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9S
ZWdFeHBKaXRUYWJsZXMuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1dC5oJywKKyAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBQcm90b3R5
cGUubHV0LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1N0cmluZ0NvbnN0cnVjdG9yLmx1dC5oJywKICAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdQcm90b3R5cGUu
bHV0LmgnLAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL1RyYWNpbmdEdHJhY2UuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IubHV0LmgnLAog
ICAgICAgICBdLAogICAgICAgICAnbWluaWRvbV9maWxlcyc6IFsKICAgICAgICAgICAgICdBUEkv
dGVzdHMvSlNOb2RlLmMnLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hh
c2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsOSBAQCBzdWIgb3V0cHV0KCkg
ewogICAgICAgICBpZiAoJGtleSBlcSAicG93IikgewogICAgICAgICAgICAgJHRodW5rR2VuZXJh
dG9yID0gInBvd1RodW5rR2VuZXJhdG9yIjsKICAgICAgICAgfQorICAgICAgICBpZiAoJGtleSBl
cSAiZnJvbUNoYXJDb2RlIikgeworICAgICAgICAgICAgJHRodW5rR2VuZXJhdG9yID0gImZyb21D
aGFyQ29kZVRodW5rR2VuZXJhdG9yIjsKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBc
IiRrZXlcIiwgJGF0dHJzWyRpXSwgKGludHB0cl90KSIgLiAkY2FzdFN0ciAuICIoJGZpcnN0VmFs
dWUpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIFRIVU5LX0dFTkVSQVRPUigkdGh1bmtHZW5lcmF0
b3IpIH0sXG4iOwogICAgICAgICAkaSsrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA4NjY0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBA
IEVYUE9SVFMKICAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUBT
dHJ1Y3R1cmVASlNDQEBTQVBBVjEyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJA
QUFJQFoKICAgICA/YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBR
QUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxAMkBAWgogICAg
ID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0lt
cGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJpbmdJbXBsQDRAQFoKKyAgICA/YWRk
U3RhdGljR2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUlu
Zm9AMTJASEBaCiAgICAgP2FsbG9jYXRlQEhlYXBASlNDQEBRQUVQQVhJQFoKICAgICA/YWxsb2Nh
dGVGcm9tU2l6ZUNsYXNzQE1hcmtlZFNwYWNlQEpTQ0BAQUFFUEFYQUFVU2l6ZUNsYXNzQDEyQEBa
CiAgICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFWElJQFoKQEAg
LTE4Miw2ICsxODMsNyBAQCBFWFBPUlRTCiAgICAgP2dldENvbnN0cnVjdERhdGFASlNDZWxsQEpT
Q0BAVUFFP0FXNENvbnN0cnVjdFR5cGVAMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKICAgICA/Z2V0
SlNOdW1iZXJASlNDZWxsQEpTQ0BAVUFFP0FWSlNWYWx1ZUAyQFhaCiAgICAgP2dldE9iamVjdEBK
U0NlbGxASlNDQEBRQUVQQVZKU09iamVjdEAyQFhaCisgICAgP2dldE93blByb3BlcnR5RGVzY3Jp
cHRvckBKU0dsb2JhbE9iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAgICAgP2dldE93blByb3BlcnR5RGVzY3Jp
cHRvckBKU09iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFB
VlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAgICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBK
U1N0cmluZ0BKU0NAQEVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3Bl
cnR5RGVzY3JpcHRvckAyQEBaCiAgICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBTdHJpbmdP
YmplY3RASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0
eURlc2NyaXB0b3JAMkBAWgpAQCAtMTkxLDYgKzE5Myw3IEBAIEVYUE9SVFMKICAgICA/Z2V0T3du
UHJvcGVydHlTbG90QEpTQXJyYXlASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElBQVZQcm9wZXJ0
eVNsb3RAMkBAWgogICAgID9nZXRPd25Qcm9wZXJ0eVNsb3RASlNDZWxsQEpTQ0BARUFFX05QQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlTbG90QDJAQFoKICAgICA/Z2V0
T3duUHJvcGVydHlTbG90QEpTQ2VsbEBKU0NAQEVBRV9OUEFWRXhlY1N0YXRlQDJASUFBVlByb3Bl
cnR5U2xvdEAyQEBaCisgICAgP2dldE93blByb3BlcnR5U2xvdEBKU0dsb2JhbE9iamVjdEBKU0NA
QFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5U2xvdEAyQEBa
CiAgICAgP2dldE93blByb3BlcnR5U2xvdEBKU09iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRl
QDJASUFBVlByb3BlcnR5U2xvdEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEBKU1N0cmlu
Z0BKU0NAQEVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5U2xv
dEAyQEBaCiAgICAgP2dldE93blByb3BlcnR5U2xvdEBKU1N0cmluZ0BKU0NAQEVBRV9OUEFWRXhl
Y1N0YXRlQDJASUFBVlByb3BlcnR5U2xvdEAyQEBaCkBAIC0yNDAsMTAgKzI0Myw2IEBAIEVYUE9S
VFMKICAgICA/bG9ja0NvdW50QEpTTG9ja0BKU0NAQFNBSFhaCiAgICAgP2xvb2t1cEdldHRlckBK
U09iamVjdEBKU0NAQFVBRT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVy
QDJAQFoKICAgICA/bG9va3VwU2V0dGVyQEpTT2JqZWN0QEpTQ0BAVUFFP0FWSlNWYWx1ZUAyQFBB
VkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgotICAgID92aXNpdENoaWxkcmVuQEpTR2xv
YmFsT2JqZWN0QEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCi0gICAgP3Zpc2l0Q2hpbGRyZW5A
SlNPYmplY3RASlNDQEBVQUVYQUFWTWFya1N0YWNrQDJAQFoKLSAgICA/dmlzaXRDaGlsZHJlbkBK
U1dyYXBwZXJPYmplY3RASlNDQEBFQUVYQUFWTWFya1N0YWNrQDJAQFoKLSAgICA/dmlzaXRDaGls
ZHJlbkBTY29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgogICAgID9tYXRl
cmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFBRVhBQVZKU0dsb2JhbERhdGFAMkBA
WgogICAgID9tb250aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgogICAgID9tc1RvWWVhckBX
VEZAQFlBSE5AWgpAQCAtMjk3LDYgKzI5Niw3IEBAIEVYUE9SVFMKICAgICA/cmVzdG9yZUFsbEBQ
cm9maWxlQEpTQ0BAUUFFWFhaCiAgICAgP3JldHJpZXZlQ2FsbGVyQEludGVycHJldGVyQEpTQ0BA
UUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTRnVuY3Rpb25AMkBAWgogICAgID9y
ZXRyaWV2ZUxhc3RDYWxsZXJASW50ZXJwcmV0ZXJASlNDQEBRQkVYUEFWRXhlY1N0YXRlQDJAQUFI
MUFBVlVTdHJpbmdAMkBBQVZKU1ZhbHVlQDJAQFoKKyAgICA/c19pbmZvQEpTR2xvYmFsT2JqZWN0
QEpTQ0BAMlVDbGFzc0luZm9AMkBCCiAgICAgP3NldEFjY2Vzc29yRGVzY3JpcHRvckBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQUVYVkpTVmFsdWVAMkAwSUBaCiAgICAgP3NldENvbmZpZ3VyYWJs
ZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYX05AWgogICAgID9zZXREZXNjcmlwdG9yQFBy
b3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQElAWgpAQCAtMzY5LDYgKzM2OSwx
MCBAQCBFWFBPUlRTCiAgICAgP3VucHJvdGVjdEBIZWFwQEpTQ0BAUUFFX05WSlNWYWx1ZUAyQEBa
CiAgICAgP3Vud3JhcHBlZE9iamVjdEBKU09iamVjdEBKU0NAQFVBRVBBVjEyQFhaCiAgICAgP3V0
ZjhAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBfTkBaCisgICAgP3Zpc2l0Q2hpbGRy
ZW5ASlNHbG9iYWxPYmplY3RASlNDQEBVQUVYQUFWTWFya1N0YWNrQDJAQFoKKyAgICA/dmlzaXRD
aGlsZHJlbkBKU09iamVjdEBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgorICAgID92aXNpdENo
aWxkcmVuQEpTV3JhcHBlck9iamVjdEBKU0NAQEVBRVhBQVZNYXJrU3RhY2tAMkBAWgorICAgID92
aXNpdENoaWxkcmVuQFNjb3BlQ2hhaW5Ob2RlQEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCiAg
ICAgP3Z0YWJsZUFuY2hvckBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BARUFFWFhaCiAgICAgP3dhaXRA
VGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZvclRocmVh
ZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtMzEzLDYgKzMxMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgY29uc3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKik7CiAgICAgT3duUHRyPFR5cGVDb3VudFNl
dD4gbV90eXBlQ291bnRTZXQ7CisgICAgSGFzaFNldDxKU0NlbGwqPiBtX2NlbGxzOwogfTsKIAog
aW5saW5lIFR5cGVDb3VudGVyOjpUeXBlQ291bnRlcigpCkBAIC0zMzksNiArMzQwLDggQEAgaW5s
aW5lIGNvbnN0IGNoYXIqIFR5cGVDb3VudGVyOjp0eXBlTmFtZQogCiBpbmxpbmUgdm9pZCBUeXBl
Q291bnRlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiB7CisgICAgaWYgKCFtX2NlbGxzLmFk
ZChjZWxsKS5zZWNvbmQpCisgICAgICAgIHJldHVybjsKICAgICBtX3R5cGVDb3VudFNldC0+YWRk
KHR5cGVOYW1lKGNlbGwpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTc1LDE1ICs3NSwyNCBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICB2b2lkIGR1bXBDYWxsZXIoKTsKICNlbmRpZgotICAgICAgICBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlKiBhcnJheVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5hcnJheVRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNo
VGFibGUqIGFycmF5Q29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1
cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYXJyYXlDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGFycmF5UHJvdG90eXBlVGFibGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmFycmF5UHJvdG90
eXBlVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogYm9vbGVhblByb3Rv
dHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5ib29sZWFuUHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSogZGF0ZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5kYXRlVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSogZGF0ZUNvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJu
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmRhdGVDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGVycm9yUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmVycm9yUHJvdG90eXBl
VGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2xvYmFsT2JqZWN0VGFi
bGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
Lmdsb2JhbE9iamVjdFRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGpz
b25UYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCkuanNvblRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG1hdGhU
YWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCkubWF0aFRhYmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51bWJlclRh
YmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5udW1iZXJUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJD
b25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5udW1iZXJDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1l
KSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1iZXJQcm90b3R5cGVUYWJsZTsg
fQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxl
KENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5v
YmplY3RDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUq
IG9iamVjdFByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucmVnRXhwVGFibGU7IH0KICAgICAgICAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNh
bGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkucmVnRXhwQ29uc3RydWN0
b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBQcm90b3R5
cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCkucmVnRXhwUHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSogc3RyaW5nVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLnN0cmluZ1RhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNo
VGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0
dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnN0cmluZ0NvbnN0cnVjdG9yVGFibGU7IH0KIAog
ICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJhc2Up
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAgICAg
ICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3Yg
KGFwQG55cG9wLmNvbSkKICAqCkBAIC0zMywyMyArMzMsNDMgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7Ci0gICAgCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJh
eShFeGVjU3RhdGUqKTsKIAotQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUpCit9CisKKyNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmx1dC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFycmF5Q29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRl
OjphcnJheUNvbnN0cnVjdG9yVGFibGUgfTsKKworLyogU291cmNlIGZvciBBcnJheUNvbnN0cnVj
dG9yLmx1dC5oCitAYmVnaW4gYXJyYXlDb25zdHJ1Y3RvclRhYmxlCisgIGlzQXJyYXkgICBhcnJh
eUNvbnN0cnVjdG9ySXNBcnJheSAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwor
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcnJheUNvbnN0cnVjdG9yKTsKKworQXJyYXlDb25z
dHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJy
YXlQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKLSAgICAvLyBFQ01BIDE1LjQuMy4xIEFycmF5
LnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKLQotICAgIC8vIG5vLiBvZiBhcmd1bWVu
dHMgZm9yIGNvbnN0cnVjdG9yCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitib29sIEFycmF5Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjphcnJh
eUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CiAK
LSAgICAvLyBFUzUKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0
dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNBcnJheSwgYXJyYXlDb25zdHJ1Y3Rvcklz
QXJyYXkpLCBEb250RW51bSk7Citib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvbkRlc2NyaXB0b3I8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjph
cnJheUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5j
dGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwpAQCAtNzIsNyArOTIsNiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgYXJncykpOwogfQog
Ci0vLyBFQ01BIDE1LjQuMgogQ29uc3RydWN0VHlwZSBBcnJheUNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcjsKQEAg
LTg1LDcgKzEwNCw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhl
eGVjLCBhcmdzKSk7CiB9CiAKLS8vIEVDTUEgMTUuNi4xCiBDYWxsVHlwZSBBcnJheUNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgLy8gZXF1aXZhbGVu
dCB0byAnbmV3IEFycmF5KC4uLi4pJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjksNyArMjksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheUNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEFycmF5UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgICAgIEFycmF5Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlw
ZSopOworCisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworCisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgICAg
IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlv
bjo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0
YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTAgKzg1LDEwIEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3QKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5Iiwg
JkpTQXJyYXk6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjphcnJheVRhYmxlfTsKK2NvbnN0IENsYXNz
SW5mbyBBcnJheVByb3RvdHlwZTo6c19pbmZvID0geyJBcnJheSIsICZKU0FycmF5OjpzX2luZm8s
IDAsIEV4ZWNTdGF0ZTo6YXJyYXlQcm90b3R5cGVUYWJsZX07CiAKIC8qIFNvdXJjZSBmb3IgQXJy
YXlQcm90b3R5cGUubHV0LmgKLUBiZWdpbiBhcnJheVRhYmxlIDE2CitAYmVnaW4gYXJyYXlQcm90
b3R5cGVUYWJsZSAxNgogICB0b1N0cmluZyAgICAgICBhcnJheVByb3RvRnVuY1RvU3RyaW5nICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdG9Mb2NhbGVTdHJpbmcgYXJyYXlQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyBEb250RW51bXxGdW5jdGlvbiAwCiAgIGNvbmNhdCAgICAgICAgIGFycmF5
UHJvdG9GdW5jQ29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtMTIzLDEyICsx
MjMsMTIgQEAgQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90eXBlKEpTR2xvYmFsTwogCiBib29s
IEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJy
YXlUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlQcm90b3R5
cGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBBcnJh
eVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU0FycmF5Pihl
eGVjLCBFeGVjU3RhdGU6OmFycmF5VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvcik7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU0FycmF5
PihleGVjLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBBcnJheSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZp
c2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MjksMjcgKzI5LDQ2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEJvb2xlYW5Qcm90b3R5cGUpOwotCi0vLyBGdW5jdGlvbnMKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNW
YWx1ZU9mKEV4ZWNTdGF0ZSopOwogCi0vLyBFQ01BIDE1LjYuNAorfQorCisjaW5jbHVkZSAiQm9v
bGVhblByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBCb29sZWFuUHJvdG90eXBlOjpzX2luZm8gPSB7ICJCb29sZWFuIiwgJkJvb2xlYW5PYmplY3Q6
OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBlVGFibGUgfTsKIAotQm9vbGVh
blByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQorLyogU291cmNlIGZvciBCb29sZWFuUHJvdG90eXBlLmx1dC5oCitAYmVn
aW4gYm9vbGVhblByb3RvdHlwZVRhYmxlCisgIHRvU3RyaW5nICBib29sZWFuUHJvdG9GdW5jVG9T
dHJpbmcgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgYm9vbGVhblByb3RvRnVu
Y1ZhbHVlT2YgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0FTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoQm9vbGVhblByb3RvdHlwZSk7CisKK0Jvb2xlYW5Qcm90b3R5cGU6OkJv
b2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9i
YWxEYXRhKCksIGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
LCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YsIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOworICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CisgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CiB9CiAKK2Jvb2wgQm9vbGVhblByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxCb29sZWFuT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Q
cm90b3R5cGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorYm9vbCBCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25EZXNjcmlwdG9yPEJvb2xlYW5PYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3Rv
dHlwZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQogCi0v
LyBFQ01BIDE1LjYuNC4yICsgMTUuNi40LjMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmgJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDcgKzI3LDIyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQm9vbGVhblByb3RvdHlwZSA6IHB1YmxpYyBCb29sZWFuT2Jq
ZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KTsKKyAgICAgICAgQm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOworCisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwor
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7
CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQm9vbGVh
bk9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBB
bm9ueW1vdXNTbG90Q291bnQgPSBCb29sZWFuT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgKyAx
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTEsMjIgKzUxLDQzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KERhdGVDb25zdHJ1Y3Rvcik7Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQYXJzZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCi1EYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90
eXBlKiBkYXRlUHJvdG90eXBlKQorfQorCisjaW5jbHVkZSAiRGF0ZUNvbnN0cnVjdG9yLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIERhdGVDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVj
U3RhdGU6OmRhdGVDb25zdHJ1Y3RvclRhYmxlIH07CisKKy8qIFNvdXJjZSBmb3IgRGF0ZUNvbnN0
cnVjdG9yLmx1dC5oCitAYmVnaW4gZGF0ZUNvbnN0cnVjdG9yVGFibGUKKyAgcGFyc2UgICAgIGRh
dGVQYXJzZSAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgVVRDICAgICAgIGRhdGVVVEMgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDcKKyAgbm93ICAgICAgIGRhdGVOb3cgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKK0BlbmQKKyovCisKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRGF0ZUNvbnN0cnVj
dG9yKTsKKworRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0
ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywg
ZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBE
b250RW51bSB8IERvbnREZWxldGUpOworfQogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBhcnNlLCBkYXRl
UGFyc2UpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
blN0cnVjdHVyZSwgNywgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAw
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOworYm9vbCBE
YXRlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0
YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKK2Jvb2wgRGF0ZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0
ZTo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvcik7CiB9CiAKIC8vIEVDTUEgMTUuOS4zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gODY2NDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yOSwx
MSArMjksMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRlQ29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBEYXRlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKik7CisgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIERhdGVQcm90
b3R5cGUqKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAg
ICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVu
Y3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisKKyAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogICAgIH07CiAKICAgICBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDg2NjQ5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwxNiArMzQsNDMgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJv
clByb3RvdHlwZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi0vLyBFQ01BIDE1LjkuNAotRXJyb3JQcm90
b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUpCit9CisKKyNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBFcnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiRXJy
b3IiLCAmRXJyb3JJbnN0YW5jZTo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OmVycm9yUHJvdG90eXBl
VGFibGUgfTsKKworLyogU291cmNlIGZvciBFcnJvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGVy
cm9yUHJvdG90eXBlVGFibGUKKyAgdG9TdHJpbmcgICAgICAgICAgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0FTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUpOworCitFcnJvclByb3RvdHlwZTo6RXJyb3JQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEVycm9ySW5zdGFuY2UoJmV4ZWMtPmdsb2JhbERh
dGEoKSwgc3RydWN0dXJlKQogewotICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVk
IGxhdGVyIGluIEVycm9yQ29uc3RydWN0b3IncyBjb25zdHJ1Y3RvcgotCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVu
dW0pOworCisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBwdXRBbm9ueW1vdXNW
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgMCwgZ2xvYmFsT2JqZWN0KTsKK30KKwor
Ym9vbCBFcnJvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxFcnJvckluc3RhbmNlPihleGVjLCBFeGVj
U3RhdGU6OmVycm9yUHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKK2Jvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRl
c2NyaXB0b3I8RXJyb3JJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjplcnJvclByb3RvdHlwZVRh
YmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gODY2NDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVy
cm9yUHJvdG90eXBlIDogcHVibGljIEVycm9ySW5zdGFuY2UgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgRXJyb3JQcm90b3R5cGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEVycm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gRXJyb3JJbnN0
YW5jZTo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gODY2NDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05MiwxNSArOTIsMjQgQEAgaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3Io
KShKU0NlbAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUg
SGFzaFRhYmxlIGFycmF5VGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFi
bGUgYXJyYXlDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFz
aFRhYmxlIGFycmF5UHJvdG90eXBlVGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBI
YXNoVGFibGUgYm9vbGVhblByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFC
TEUgSGFzaFRhYmxlIGpzb25UYWJsZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hU
YWJsZSBkYXRlVGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgZGF0
ZUNvbnN0cnVjdG9yVGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUg
ZXJyb3JQcm90b3R5cGVUYWJsZTsKK2V4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJs
ZSBnbG9iYWxPYmplY3RUYWJsZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJs
ZSBtYXRoVGFibGU7Ci1leHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgbnVtYmVy
VGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgbnVtYmVyQ29uc3Ry
dWN0b3JUYWJsZTsKK2V4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBudW1iZXJQ
cm90b3R5cGVUYWJsZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBvYmpl
Y3RDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxl
IG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRh
YmxlIHJlZ0V4cFRhYmxlOwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHJl
Z0V4cENvbnN0cnVjdG9yVGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFi
bGUgcmVnRXhwUHJvdG90eXBlVGFibGU7CiBleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNo
VGFibGUgc3RyaW5nVGFibGU7CitleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUg
c3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKIAogdm9pZCogSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0
cjsKIHZvaWQqIEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyOwpAQCAtMTQ2LDE1ICsxNTUs
MjQgQEAgdm9pZCBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKQogSlNHbG9iYWxEYXRhOjpKU0ds
b2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0
aHJlYWRTdGFja1R5cGUpCiAgICAgOiBnbG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAg
ICAsIGNsaWVudERhdGEoMCkKLSAgICAsIGFycmF5VGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpT
Qzo6YXJyYXlUYWJsZSkpCisgICAgLCBhcnJheUNvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNo
VGFibGU+KEpTQzo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAsIGFycmF5UHJvdG90eXBl
VGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6YXJyYXlQcm90b3R5cGVUYWJsZSkpCisgICAg
LCBib29sZWFuUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6Ym9vbGVhblBy
b3RvdHlwZVRhYmxlKSkKICAgICAsIGRhdGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpk
YXRlVGFibGUpKQorICAgICwgZGF0ZUNvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+
KEpTQzo6ZGF0ZUNvbnN0cnVjdG9yVGFibGUpKQorICAgICwgZXJyb3JQcm90b3R5cGVUYWJsZShm
YXN0TmV3PEhhc2hUYWJsZT4oSlNDOjplcnJvclByb3RvdHlwZVRhYmxlKSkKKyAgICAsIGdsb2Jh
bE9iamVjdFRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Omdsb2JhbE9iamVjdFRhYmxlKSkK
ICAgICAsIGpzb25UYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpqc29uVGFibGUpKQogICAg
ICwgbWF0aFRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om1hdGhUYWJsZSkpCi0gICAgLCBu
dW1iZXJUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpudW1iZXJUYWJsZSkpCisgICAgLCBu
dW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNvbnN0
cnVjdG9yVGFibGUpKQorICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFi
bGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFibGUpKQogICAgICwgb2JqZWN0Q29uc3RydWN0b3JU
YWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkKKyAg
ICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om9iamVjdFBy
b3RvdHlwZVRhYmxlKSkKICAgICAsIHJlZ0V4cFRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6
OnJlZ0V4cFRhYmxlKSkKICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNo
VGFibGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkpCisgICAgLCByZWdFeHBQcm90b3R5
cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBQcm90b3R5cGVUYWJsZSkpCiAg
ICAgLCBzdHJpbmdUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpzdHJpbmdUYWJsZSkpCisg
ICAgLCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnN0cmlu
Z0NvbnN0cnVjdG9yVGFibGUpKQogICAgICwgaWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGFUeXBl
ID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpIDog
Y3JlYXRlSWRlbnRpZmllclRhYmxlKCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG5ldyBDb21tb25J
ZGVudGlmaWVycyh0aGlzKSkKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZm
ZXIpCkBAIC0yNzUsMjUgKzI5Myw0MyBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQog
ICAgIGludGVycHJldGVyID0gMDsKICNlbmRpZgogCi0gICAgYXJyYXlUYWJsZS0+ZGVsZXRlVGFi
bGUoKTsKKyAgICBhcnJheVByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIGFycmF5
Q29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBib29sZWFuUHJvdG90eXBlVGFi
bGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgZGF0ZVRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIGRh
dGVDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIGVycm9yUHJvdG90eXBlVGFi
bGUtPmRlbGV0ZVRhYmxlKCk7CisgICAgZ2xvYmFsT2JqZWN0VGFibGUtPmRlbGV0ZVRhYmxlKCk7
CiAgICAganNvblRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIG1hdGhUYWJsZS0+ZGVsZXRlVGFi
bGUoKTsKLSAgICBudW1iZXJUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBudW1iZXJDb25zdHJ1
Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIG51bWJlclByb3RvdHlwZVRhYmxlLT5kZWxl
dGVUYWJsZSgpOwogICAgIG9iamVjdENvbnN0cnVjdG9yVGFibGUtPmRlbGV0ZVRhYmxlKCk7Cisg
ICAgb2JqZWN0UHJvdG90eXBlVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwVGFibGUt
PmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKKyAgICByZWdFeHBQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdU
YWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVU
YWJsZSgpOwogCi0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGFycmF5VGFi
bGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlDb25zdHJ1
Y3RvclRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGFycmF5
UHJvdG90eXBlVGFibGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4o
Ym9vbGVhblByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hU
YWJsZSo+KGRhdGVUYWJsZSkpOworICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUq
PihkYXRlQ29uc3RydWN0b3JUYWJsZSkpOworICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNo
VGFibGUqPihlcnJvclByb3RvdHlwZVRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0
PEhhc2hUYWJsZSo+KGdsb2JhbE9iamVjdFRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9j
YXN0PEhhc2hUYWJsZSo+KGpzb25UYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihtYXRoVGFibGUpKTsKLSAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlKj4obnVtYmVyVGFibGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxl
Kj4obnVtYmVyQ29uc3RydWN0b3JUYWJsZSkpOworICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihudW1iZXJQcm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3Rf
Y2FzdDxIYXNoVGFibGUqPihvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSk7CisgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdFByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFz
dERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cFRhYmxlKSk7CiAgICAgZmFzdERl
bGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKTsKKyAg
ICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocmVnRXhwUHJvdG90eXBlVGFibGUp
KTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oc3RyaW5nVGFibGUpKTsK
KyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oc3RyaW5nQ29uc3RydWN0b3JU
YWJsZSkpOwogCiAgICAgZGVsZXRlIHBhcnNlcjsKICAgICBkZWxldGUgbGV4ZXI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
ODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMTM2LDE1ICsxMzYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlOwogICAgICAgICBDbGllbnREYXRhKiBj
bGllbnREYXRhOwogCi0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSogYXJyYXlUYWJsZTsKKyAgICAg
ICAgY29uc3QgSGFzaFRhYmxlKiBhcnJheUNvbnN0cnVjdG9yVGFibGU7CisgICAgICAgIGNvbnN0
IEhhc2hUYWJsZSogYXJyYXlQcm90b3R5cGVUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiBib29sZWFuUHJvdG90eXBlVGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogZGF0ZVRh
YmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIGRhdGVDb25zdHJ1Y3RvclRhYmxlOworICAg
ICAgICBjb25zdCBIYXNoVGFibGUqIGVycm9yUHJvdG90eXBlVGFibGU7CisgICAgICAgIGNvbnN0
IEhhc2hUYWJsZSogZ2xvYmFsT2JqZWN0VGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
anNvblRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG1hdGhUYWJsZTsKLSAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBu
dW1iZXJDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclBy
b3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9y
VGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAg
ICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwVGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hU
YWJsZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBy
ZWdFeHBQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJs
ZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwogICAg
ICAgICAKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAg
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBhY3RpdmF0aW9uU3RydWN0dXJlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgi
CkBAIC02OCw4ICs2OSwyNyBAQAogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NvbnN0IENsYXNzSW5mbyBKU0dsb2JhbE9iamVjdDo6c19pbmZvID0g
eyAiR2xvYmFsT2JqZWN0IiwgJk51bWJlck9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Omds
b2JhbE9iamVjdFRhYmxlIH07CisKKy8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0LmgK
K0BiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQorICBwYXJzZUludCAgICAgICAgICAgICAgZ2xvYmFs
RnVuY1BhcnNlSW50ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIHBhcnNlRmxv
YXQgICAgICAgICAgICBnbG9iYWxGdW5jUGFyc2VGbG9hdCAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgaXNOYU4gICAgICAgICAgICAgICAgIGdsb2JhbEZ1bmNJc05hTiAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBpc0Zpbml0ZSAgICAgICAgICAgICAgZ2xv
YmFsRnVuY0lzRmluaXRlICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGVzY2Fw
ZSAgICAgICAgICAgICAgICBnbG9iYWxGdW5jRXNjYXBlICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgdW5lc2NhcGUgICAgICAgICAgICAgIGdsb2JhbEZ1bmNVbmVzY2FwZSAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBkZWNvZGVVUkkgICAgICAgICAgICAg
Z2xvYmFsRnVuY0RlY29kZVVSSSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGRl
Y29kZVVSSUNvbXBvbmVudCAgICBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50ICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZW5jb2RlVVJJICAgICAgICAgICAgIGdsb2JhbEZ1bmNFbmNvZGVV
UkkgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBlbmNvZGVVUklDb21wb25lbnQg
ICAgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudCAgICBEb250RW51bXxGdW5jdGlvbiAxCitA
ZW5kCisqLworCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTR2xvYmFsT2JqZWN0KTsKIAog
Ly8gRGVmYXVsdCBudW1iZXIgb2YgdGlja3MgYmVmb3JlIGEgdGltZW91dCBjaGVjayBzaG91bGQg
YmUgZG9uZS4KQEAgLTE2Nyw4ICsxODcsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChK
U1ZhbHVlIHByb3RvCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gSlNHbG9iYWxPYmplY3Q6Omds
b2JhbEV4ZWMoKTsKIAotICAgIC8vIFByb3RvdHlwZXMKLQogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBGdW5jdGlvblByb3Rv
dHlwZShleGVjLCB0aGlzLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwganNOdWxsKCkpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJl
IHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgogICAgIG1fZnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CkBAIC0xNzcsNyArMTk1LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CiAgICAgbV9jYWxsRnVuY3Rp
b24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAgICBtX2Fw
cGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5jdGlvbik7
Ci0gICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIG1fZnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICBtX29iamVjdFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSkp
OwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKIAogICAgIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSkp
OwpAQCAtMTk1LDMyICsyMTMsMzIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90bwogICAgIG1fc3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0cmluZ1Byb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKSkpOwogCi0gICAgbV9ib29sZWFuUHJvdG90eXBl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgQm9vbGVhblByb3RvdHlw
ZShleGVjLCB0aGlzLCBCb29sZWFuUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpKTsKKyAgICBtX2Jvb2xlYW5Qcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBCb29sZWFuUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSkpOwogICAgIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBCb29sZWFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX2Jvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpKTsKIAotICAgIG1fbnVtYmVyUHJv
dG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTnVtYmVyUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0
dXJlLmdldCgpKSk7CisgICAgbV9udW1iZXJQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5cGUoZXhlYywgdGhpcywgTnVtYmVyUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBtX251bWJlck9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBOdW1iZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fbnVtYmVyUHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX2RhdGVQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBEYXRlUHJvdG90eXBl
KGV4ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fZGF0ZVN0cnVjdHVyZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBEYXRlSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSkpOwogCi0gICAgbV9y
ZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBS
ZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBS
ZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fbWV0aG9kQ2Fs
bER1bW15LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpKTsKIAotICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoZXhl
YykgRXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5j
dGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBl
ID0gbmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGVycm9y
UHJvdG90eXBlKSk7CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAogICAgIEpTQ2VsbCogb2JqZWN0
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpT
Q2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgRnVuY3Rpb25Db25zdHJ1Y3Rv
cihleGVjLCB0aGlzLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBB
cnJheUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBKU0Nl
bGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVjKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCksIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogc3RyaW5n
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFN0
cmluZ0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpT
Q2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBCb29sZWFuQ29uc3RydWN0b3Io
ZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9ib29sZWFuUHJvdG90eXBl
LmdldCgpKTsKICAgICBKU0NlbGwqIG51bWJlckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOdW1i
ZXJDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fbnVt
YmVyUHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0NlbGwqIGRhdGVDb25zdHJ1Y3RvciA9IG5ldyAo
ZXhlYykgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIERhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAg
SlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2RhdGVQcm90b3R5cGUuZ2V0KCkpOwog
CiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBu
ZXcgKGV4ZWMpIFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMjQ1LDEwICsyNjMsNiBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9yZWdFeHBQ
cm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1fcmVnRXhwQ29uc3Ry
dWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CiAKLSAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9ycwotCi0gICAgLy8gRklYTUU6IFRoZXNl
IHByb3BlcnRpZXMgY291bGQgYmUgaGFuZGxlZCBieSBhIHN0YXRpYyBoYXNoIHRhYmxlLgotCiAg
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJGdW5jdGlvbiIpLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkFycmF5IiksIGFycmF5Q29uc3RydWN0b3Is
IERvbnRFbnVtKTsKQEAgLTI2NSw3ICsyNzksOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dChKU1ZhbHVlIHByb3RvCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlR5cGVFcnJvciIpLCBtX3R5cGVF
cnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlVS
SUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogCi0gICAg
Ly8gU2V0IGdsb2JhbCB2YWx1ZXMuCisgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCksIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxG
dW5jRXZhbCkpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKKwogICAgIEdsb2JhbFByb3BlcnR5SW5m
byBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlm
aWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0aGlzLCBNYXRo
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiTmFOIiksIGpzTmFOKCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTI3MywyNyArMjg5LDggQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRl
bnRpZmllcihleGVjLCAidW5kZWZpbmVkIiksIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZp
ZXIoZXhlYywgIkpTT04iKSwgbmV3IChleGVjKSBKU09OT2JqZWN0KHRoaXMsIEpTT05PYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwotCiAgICAgYWRkU3RhdGljR2xv
YmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIAot
ICAgIC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgotCi0gICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMs
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFs
LCBnbG9iYWxGdW5jRXZhbCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAyLCBJZGVudGlmaWVyKGV4ZWMsICJw
YXJzZUludCIpLCBnbG9iYWxGdW5jUGFyc2VJbnQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAi
cGFyc2VGbG9hdCIpLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCksIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlv
bihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4
ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4pLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAi
aXNGaW5pdGUiKSwgZ2xvYmFsRnVuY0lzRmluaXRlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4
ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywg
ImVzY2FwZSIpLCBnbG9iYWxGdW5jRXNjYXBlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMs
IHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInVu
ZXNjYXBlIiksIGdsb2JhbEZ1bmNVbmVzY2FwZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJk
ZWNvZGVVUkkiKSwgZ2xvYmFsRnVuY0RlY29kZVVSSSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMs
ICJkZWNvZGVVUklDb21wb25lbnQiKSwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCksIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
LCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlbmNvZGVVUkkiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSSks
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlbmNvZGVVUklDb21wb25lbnQiKSwgZ2xvYmFsRnVu
Y0VuY29kZVVSSUNvbXBvbmVudCksIERvbnRFbnVtKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAianNjcHJpbnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwotI2VuZGlm
Ci0KICAgICByZXNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CiB9
CiAKQEAgLTQ0NCw2ICs0NDEsNDIgQEAgdm9pZCogSlNHbG9iYWxPYmplY3Q6Om9wZXJhdG9yIG5l
dyhzaXplXwogICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNpemUpOwogfQog
Cit2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5m
byogZ2xvYmFscywgaW50IGNvdW50KQoreworICAgIHNpemVfdCBvbGRTaXplID0gbV9yZWdpc3Rl
ckFycmF5U2l6ZTsKKyAgICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNpemUgKyBjb3VudDsKKyAgICBP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRB
cnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W25ld1NpemVdKTsKKyAgICBpZiAobV9y
ZWdpc3RlckFycmF5KSB7CisgICAgICAgIC8vIG1lbWNweSBpcyBzYWZlIGhlcmUgYXMgd2UncmUg
Y29weWluZyBiYXJyaWVycyB3ZSBhbHJlYWR5IG93biBmcm9tIHRoZSBleGlzdGluZyBhcnJheQor
ICAgICAgICBtZW1jcHkocmVnaXN0ZXJBcnJheS5nZXQoKSArIGNvdW50LCBtX3JlZ2lzdGVyQXJy
YXkuZ2V0KCksIG9sZFNpemUgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICB9CisKKyAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBuZXdT
aXplOworICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgp
LCBuZXdTaXplKTsKKworICAgIGZvciAoaW50IGkgPSAwLCBpbmRleCA9IC1zdGF0aWNfY2FzdDxp
bnQ+KG9sZFNpemUpIC0gMTsgaSA8IGNvdW50OyArK2ksIC0taW5kZXgpIHsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvJiBnbG9iYWwgPSBnbG9iYWxzW2ldOworICAgICAgICBBU1NFUlQoZ2xv
YmFsLmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKTsKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBu
ZXdFbnRyeShpbmRleCwgZ2xvYmFsLmF0dHJpYnV0ZXMpOworICAgICAgICBzeW1ib2xUYWJsZSgp
LmFkZChnbG9iYWwuaWRlbnRpZmllci5pbXBsKCksIG5ld0VudHJ5KTsKKyAgICAgICAgcmVnaXN0
ZXJBdChpbmRleCkuc2V0KGdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsLnZhbHVlKTsKKyAgICB9
Cit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIGlmIChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNWYXJpYWJsZU9iamVjdD4oZXhl
YywgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1l
LCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0
KHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIGlmIChnZXRT
dGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNWYXJpYWJsZU9iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OldlYWtNYXBz
RmluYWxpemVyOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNHbG9iYWxPYmplY3QoaGFuZGxlLmdl
dCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpbml0KHRoaXMpOwogICAgICAgICB9CiAKKyAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTT2JqZWN0KiB0aGlzVmFsdWUpCiAgICAgICAgICAgICA6IEpTVmFyaWFibGVP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKQEAgLTMxNyw0
MiArMzE5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheVNpemUg
PSBjb3VudDsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkU3Rh
dGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qIGdsb2JhbHMsIGludCBjb3VudCkKLSAgICB7
Ci0gICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9yZWdpc3RlckFycmF5U2l6ZTsKLSAgICAgICAg
c2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICsgY291bnQ7Ci0gICAgICAgIE93bkFycmF5UHRyPFdy
aXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBX
cml0ZUJhcnJpZXI8VW5rbm93bj5bbmV3U2l6ZV0pOwotICAgICAgICBpZiAobV9yZWdpc3RlckFy
cmF5KSB7Ci0gICAgICAgICAgICAvLyBtZW1jcHkgaXMgc2FmZSBoZXJlIGFzIHdlJ3JlIGNvcHlp
bmcgYmFycmllcnMgd2UgYWxyZWFkeSBvd24gZnJvbSB0aGUgZXhpc3RpbmcgYXJyYXkKLSAgICAg
ICAgICAgIG1lbWNweShyZWdpc3RlckFycmF5LmdldCgpICsgY291bnQsIG1fcmVnaXN0ZXJBcnJh
eS5nZXQoKSwgb2xkU2l6ZSAqIHNpemVvZihSZWdpc3RlcikpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgp
ICsgbmV3U2l6ZTsKLSAgICAgICAgc2V0UmVnaXN0ZXJzKHJlZ2lzdGVycywgcmVnaXN0ZXJBcnJh
eS5yZWxlYXNlKCksIG5ld1NpemUpOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwLCBpbmRleCA9
IC1zdGF0aWNfY2FzdDxpbnQ+KG9sZFNpemUpIC0gMTsgaSA8IGNvdW50OyArK2ksIC0taW5kZXgp
IHsKLSAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyYgZ2xvYmFsID0gZ2xvYmFsc1tpXTsK
LSAgICAgICAgICAgIEFTU0VSVChnbG9iYWwuYXR0cmlidXRlcyAmIERvbnREZWxldGUpOwotICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgZ2xvYmFsLmF0dHJpYnV0
ZXMpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUoKS5hZGQoZ2xvYmFsLmlkZW50aWZpZXIuaW1w
bCgpLCBuZXdFbnRyeSk7Ci0gICAgICAgICAgICByZWdpc3RlckF0KGluZGV4KS5zZXQoZ2xvYmFs
RGF0YSgpLCB0aGlzLCBnbG9iYWwudmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW5s
aW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQot
ICAgIHsKLSAgICAgICAgaWYgKEpTVmFyaWFibGVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIHJldHVybiBzeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLQot
ICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLSAgICB7Ci0gICAgICAgIGlmIChzeW1ib2xUYWJsZUdl
dChwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIHJldHVybiBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9v
bCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gODY2NDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4NywxMyArNTg3LDQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jVQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
ZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwogfQogCi0jaWZuZGVmIE5ERUJVRwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSlNDUHJpbnQoRXhlY1N0YXRlKiBleGVj
KQotewotICAgIENTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YykudXRmOCgpOwotICAgIHB1dHMoc3RyaW5nLmRhdGEoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBvbmVudChFeGVjU3RhdGUqKTsKICAgICBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKik7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhl
Y1N0YXRlKik7Ci0jaWZuZGVmIE5ERUJVRwotICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0pTQ1ByaW50KEV4ZWNTdGF0ZSopOwotI2VuZGlmCiAKICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kID0gOTAwNzE5OTI1NDc0MDk5
Mi4wOwogICAgIGRvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3Ro
LCBpbnQgcmFkaXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5jcHAJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1hdGhPYmplY3QgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNf
aW5mbyA9IHsgIk1hdGgiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4
ZWNTdGF0ZTo6bWF0aFRhYmxlIH07CiAKIC8qIFNvdXJjZSBmb3IgTWF0aE9iamVjdC5sdXQuaApA
QCAtMTAxLDggKzk5LDYgQEAgTWF0aE9iamVjdDo6TWF0aE9iamVjdChFeGVjU3RhdGUqIGV4ZWMs
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiU1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwogfQogCi0vLyBFQ01BIDE1LjgKLQogYm9vbCBNYXRoT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVj
KSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDg2NjQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCwyMDAzIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsMTAgKzQyLDEwIEBAIHN0YXRpYyBKU1ZhbHVl
IG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENs
YXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJu
YWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om51bWJlclRhYmxlIH07Citjb25zdCBD
bGFzc0luZm8gTnVtYmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxl
IH07CiAKIC8qIFNvdXJjZSBmb3IgTnVtYmVyQ29uc3RydWN0b3IubHV0LmgKLUBiZWdpbiBudW1i
ZXJUYWJsZQorQGJlZ2luIG51bWJlckNvbnN0cnVjdG9yVGFibGUKICAgIE5hTiAgICAgICAgICAg
ICAgICAgICBudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlICAgICAgIERvbnRFbnVtfERvbnREZWxl
dGV8UmVhZE9ubHkKICAgIE5FR0FUSVZFX0lORklOSVRZICAgICBudW1iZXJDb25zdHJ1Y3Rvck5l
Z0luZmluaXR5ICAgIERvbnRFbnVtfERvbnREZWxldGV8UmVhZE9ubHkKICAgIFBPU0lUSVZFX0lO
RklOSVRZICAgICBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5ICAgIERvbnRFbnVtfERvbnRE
ZWxldGV8UmVhZE9ubHkKQEAgLTY4LDEyICs2OCwxMiBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVt
YmVyQ29uc3RydWN0b3IoRXhlCiAKIGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8TnVt
YmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVy
VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0
YXRpY1ZhbHVlU2xvdDxOdW1iZXJDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywg
RXhlY1N0YXRlOjpudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiBib29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVEZXNjcmlwdG9yPE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVj
LCBFeGVjU3RhdGU6Om51bWJlclRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8TnVtYmVyQ29uc3Ry
dWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0
b3JUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogc3Rh
dGljIEpTVmFsdWUgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCwyMDAzIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJQcm90b3R5cGUpOwotCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKQEAgLTQzLDI3ICs0MSw0OCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5j
VG9QcmVjaXNpb24oRXhlY1N0YXRlKik7CiAKLS8vIEVDTUEgMTUuNy40Cit9CisKKyNpbmNsdWRl
ICJOdW1iZXJQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gTnVtYmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJOdW1iZXIiLCAmTnVtYmVyT2JqZWN0
OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUgfTsKKworLyogU291
cmNlIGZvciBOdW1iZXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBudW1iZXJQcm90b3R5cGVUYWJs
ZQorICB0b1N0cmluZyAgICAgICAgICBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgdG9Mb2NhbGVTdHJpbmcgICAgbnVtYmVyUHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgIG51
bWJlclByb3RvRnVuY1ZhbHVlT2YgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0Zp
eGVkICAgICAgICAgICBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgdG9FeHBvbmVudGlhbCAgICAgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlh
bCAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvUHJlY2lzaW9uICAgICAgIG51bWJlclByb3Rv
RnVuY1RvUHJlY2lzaW9uICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KIAotTnVt
YmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSkKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyUHJvdG90eXBl
KTsKKworTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6
IE51bWJlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBzZXRJ
bnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIoMCkpOwogCi0gICAgLy8g
VGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIE51bWJlckNvbnN0cnVj
dG9yIGhhcyBiZWVuIGNvbnN0cnVjdGVkCisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
KyAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgMCwgZ2xv
YmFsT2JqZWN0KTsKK30KKworYm9vbCBOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVy
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclByb3RvdHlwZVRhYmxlKGV4ZWMpLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBu
dW1iZXJQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9M
b2NhbGVTdHJpbmcsIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0ZpeGVkLCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKSwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1
cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0V4cG9uZW50aWFsLCBudW1iZXJQcm90b0Z1
bmNUb0V4cG9uZW50aWFsKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1ByZWNpc2lv
biwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24pLCBEb250RW51bSk7Citib29sIE51bWJlclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxOdW1iZXJPYmplY3Q+
KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIEVDTUEgMTUu
Ny40LjIgLSAxNS43LjQuNwotCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhpc051bWJl
cihKU1ZhbHVlIHRoaXNWYWx1ZSwgZG91YmxlICZ4KQogewogICAgIEpTVmFsdWUgdiA9IHRoaXNW
YWx1ZS5nZXRKU051bWJlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsNyArMjcsMjIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJQcm90b3R5cGUgOiBwdWJsaWMg
TnVtYmVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlclByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKKworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE51bWJlck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBOdW1iZXJPYmplY3Q6OkFub255bW91c1Nsb3RDb3Vu
dCArIDE7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yOCw4ICsyOCw2IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE9iamVjdFBy
b3RvdHlwZSk7Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBl
T2YoRXhlY1N0YXRlKik7CkBAIC00MCwyNyArMzgsNDIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmlu
ZyhFeGVjU3RhdGUqKTsKIAotT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0dWN0
dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorfQorCisjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE9i
amVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNf
aW5mbywgMCwgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZSB9OworCisvKiBTb3VyY2Ug
Zm9yIE9iamVjdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIG9iamVjdFByb3RvdHlwZVRhYmxlCisg
IHRvU3RyaW5nICAgICAgICAgICAgICBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0cmluZyAgICAgICAgb2JqZWN0
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAg
dmFsdWVPZiAgICAgICAgICAgICAgIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhhc093blByb3BlcnR5ICAgICAgICBvYmplY3RQ
cm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBw
cm9wZXJ0eUlzRW51bWVyYWJsZSAgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgaXNQcm90b3R5cGVPZiAgICAgICAgIG9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIF9f
ZGVmaW5lR2V0dGVyX18gICAgICBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgorICBfX2RlZmluZVNldHRlcl9fICAgICAgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lU2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgX19s
b29rdXBHZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIF9fbG9va3VwU2V0dGVyX18gICAgICBvYmplY3RQcm90
b0Z1bmNMb29rdXBTZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAor
Ki8KKworQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChPYmplY3RQcm90b3R5cGUpOworCitPYmpl
Y3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3R1Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3R1Y3R1cmUpCiAgICAgLCBtX2hhc05vUHJvcGVy
dGllc1dpdGhVSW50MzJOYW1lcyh0cnVlKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywg
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRv
TG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiksIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hh
c093blByb3BlcnR5KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm9wZXJ0eUlzRW51
bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpLCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVuY0lzUHJvdG90
eXBlT2YpLCBEb250RW51bSk7Ci0KLSAgICAvLyBNb3ppbGxhIGV4dGVuc2lvbnMKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlv
bihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuX19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKSwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1
cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90
b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fbG9va3Vw
R2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuX19sb29rdXBTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVy
KSwgRG9udEVudW0pOworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgcHV0QW5v
bnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7
CiB9CiAKIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBKU09iamVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIEpTTm9uRmluYWxPYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKIAogICAgIGlmIChtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcykgewog
ICAgICAgICBib29sIGlzVUludDMyOwpAQCAtNzMsMTIgKzg2LDIwIEBAIGJvb2wgT2JqZWN0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKIHsKICAgICBpZiAobV9oYXNOb1Byb3BlcnRpZXNX
aXRoVUludDMyTmFtZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJl
dHVybiBKU05vbkZpbmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYm9vbCBPYmplY3RQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8SlNOb25GaW5hbE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RQ
cm90b3R5cGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KIAotLy8g
RUNNQSAxNS4yLjQuMiwgMTUuMi40LjQsIDE1LjIuNC41LCAxNS4yLjQuNworYm9vbCBPYmplY3RQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNOb25GaW5hbE9i
amVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZShleGVjKSwgdGhpcywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0
YXRlKiBleGVjKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDg2NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMTEgKzI3LDI0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0
cnVjdHVyZSk7CisgICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOworCisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOworCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBKU05vbkZpbmFsT2JqZWN0OjpBbm9ueW1vdXNT
bG90Q291bnQgKyAxOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAg
ICAgICAgIGJvb2wgbV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXM7CiAgICAgfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gODY2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsNDUgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoUmVnRXhwUHJvdG90
eXBlKTsKLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9G
dW5jVGVzdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7CiAKLS8vIEVDTUEgMTUuMTAuNQorfQorCisjaW5jbHVkZSAiUmVnRXhwUHJvdG90
eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFBy
b3RvdHlwZTo6c19pbmZvID0geyAiUmVnRXhwIiwgJlJlZ0V4cE9iamVjdDo6c19pbmZvLCAwLCBF
eGVjU3RhdGU6OnJlZ0V4cFByb3RvdHlwZVRhYmxlIH07CisKKy8qIFNvdXJjZSBmb3IgUmVnRXhw
UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcmVnRXhwUHJvdG90eXBlVGFibGUKKyAgY29tcGlsZSAg
IHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIGV4ZWMg
ICAgICByZWdFeHBQcm90b0Z1bmNFeGVjICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0
ZXN0ICAgICAgcmVnRXhwUHJvdG9GdW5jVGVzdCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgdG9TdHJpbmcgIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nICAgICBEb250RW51bXxGdW5jdGlv
biAwCitAZW5kCisqLwogCi1SZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChSZWdFeHBQcm90b3R5cGUpOworCitSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogUmVnRXhwT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBSZWdFeHA6OmNyZWF0ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIiwgTm9GbGFncykpCiB7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmV4ZWMsIHJlZ0V4cFByb3RvRnVuY0V4ZWMpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyks
IERvbnRFbnVtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAgIHB1dEFub255
bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwor
fQorCitib29sIFJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3Qp
Cit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxSZWdFeHBPYmplY3Q+KGV4ZWMs
IEV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25EZXNjcmlwdG9yPFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90
b3R5cGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cFByb3RvdHlwZSA6IHB1
YmxpYyBSZWdFeHBPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSk7CisgICAgICAgIFJlZ0V4cFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKKworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
ICZzX2luZm8pOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IFJlZ0V4cE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBSZWdFeHBPYmplY3Q6OkFub255bW91c1Nsb3RD
b3VudCArIDE7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNDMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqKTsKKwor
fQorCisjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gU3RyaW5nQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpzdHJpbmdDb25z
dHJ1Y3RvclRhYmxlIH07CisKKy8qIFNvdXJjZSBmb3IgU3RyaW5nQ29uc3RydWN0b3IubHV0LmgK
K0BiZWdpbiBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlCisgIGZyb21DaGFyQ29kZSAgICAgICAgICBz
dHJpbmdGcm9tQ2hhckNvZGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLwor
CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKKworU3RyaW5n
Q29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlw
ZSogc3RyaW5nUHJvdG90eXBlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBzdHJpbmdQ
cm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQoreworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0
ZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250
RW51bSB8IERvbnREZWxldGUpOworfQorCitib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nQ29uc3RydWN0b3JU
YWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBTdHJpbmdD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxJbnRlcm5hbEZ1
bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRo
aXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Kwogc3RhdGljIE5FVkVSX0lOTElORSBKU1ZhbHVlIHN0cmluZ0Zyb21DaGFyQ29kZVNsb3dDYXNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CkBAIC00NiwyNSArODMsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdGcm9tQ2hhckNv
ZGVTbG93Q2FzZShleGVjKSk7CiB9CiAKLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5n
Q29uc3RydWN0b3IpOwotCi1TdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCi17Ci0gICAgLy8gRUNNQSAxNS41LjMuMSBT
dHJpbmcucHJvdG90eXBlCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQcm90b3R5
cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLQotICAgIC8vIEVDTUEgMTUu
NS4zLjIgZnJvbUNoYXJDb2RlKCkKLSNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX09QVElN
SVpFX05BVElWRV9DQUxMKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5mcm9tQ2hhckNvZGUsIGV4ZWMtPmds
b2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oc3RyaW5nRnJvbUNoYXJDb2RlLCBmcm9tQ2hhckNv
ZGVUaHVua0dlbmVyYXRvcikpLCBEb250RW51bSk7Ci0jZWxzZQotICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5m
cm9tQ2hhckNvZGUsIHN0cmluZ0Zyb21DaGFyQ29kZSksIERvbnRFbnVtKTsKLSNlbmRpZgotICAg
IC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotfQot
Ci0vLyBFQ01BIDE1LjUuMgogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CkBAIC03OSw3ICs5Nyw2IEBAIENvbnN0cnVjdFR5cGUgU3Ry
aW5nQ29uc3RydWN0b3I6OmdldENvbnMKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CiB9
CiAKLS8vIEVDTUEgMTUuNS4xCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+
YXJndW1lbnRDb3VudCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA4NjY0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDEwICsyOSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ0NvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAg
U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBTdHJpbmdQcm90b3R5cGUqKTsKKyAgICAg
ICAgU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBTdHJpbmdQcm90b3R5cGUqKTsKIAorICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKKworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
ICZzX2luZm8pOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOworCisgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0
YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisK
KyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>