<?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>202475</bug_id>
          
          <creation_ts>2019-10-02 09:45:05 -0700</creation_ts>
          <short_desc>[JSC] Implement RegExp Match Indices proposal</short_desc>
          <delta_ts>2021-02-22 10:42:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222138</see_also>
          <bug_file_loc>https://github.com/tc39/proposal-regexp-match-indices</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>204067</dependson>
          <blocked>222278</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ron Buckton">rbuckton</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rbuckton</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576030</commentid>
    <comment_count>0</comment_count>
    <who name="Ron Buckton">rbuckton</who>
    <bug_when>2019-10-02 09:45:05 -0700</bug_when>
    <thetext>Proposal Repository: https://github.com/tc39/proposal-regexp-match-indices

This proposal is currently at Stage 3 and is seeking implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693430</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-30 10:29:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/69797861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695377</commentid>
    <comment_count>2</comment_count>
      <attachid>410711</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-10-06 16:24:48 -0700</bug_when>
    <thetext>Created attachment 410711
Work in progress patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695379</commentid>
    <comment_count>3</comment_count>
      <attachid>410711</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-10-06 16:25:43 -0700</bug_when>
    <thetext>Comment on attachment 410711
Work in progress patch

This implements a straightforward implementation.  Uploaded here for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706724</commentid>
    <comment_count>4</comment_count>
      <attachid>413897</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-11-11 18:24:29 -0800</bug_when>
    <thetext>Created attachment 413897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707282</commentid>
    <comment_count>5</comment_count>
      <attachid>414055</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-11-13 09:41:53 -0800</bug_when>
    <thetext>Created attachment 414055
Updated Patch addressing test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710706</commentid>
    <comment_count>6</comment_count>
      <attachid>414055</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-30 12:08:54 -0800</bug_when>
    <thetext>Comment on attachment 414055
Updated Patch addressing test failures

View in context: https://bugs.webkit.org/attachment.cgi?id=414055&amp;action=review

&gt; JSTests/stress/dfg-strength-reduction-for-regexp-should-indices-property.js:12
&gt; +    // shouldBe(m.indices[0][1], 1);

Is this commented out intentionally?

&gt; LayoutTests/ChangeLog:11
&gt; +        * js/regexp-named-capture-groups-expected.txt:
&gt; +        * js/script-tests/regexp-named-capture-groups.js:

Can we add these tests in JSTests/stress, and skip them for 32bit architectures? We will see failures in watchOS ARMv7k.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710736</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-11-30 13:26:24 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; Comment on attachment 414055 [details]
&gt; Updated Patch addressing test failures
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=414055&amp;action=review
&gt; 
&gt; &gt; JSTests/stress/dfg-strength-reduction-for-regexp-should-indices-property.js:12
&gt; &gt; +    // shouldBe(m.indices[0][1], 1);
&gt; 
&gt; Is this commented out intentionally?

The leading comment should be removed.  It was for patch testing.

&gt; &gt; LayoutTests/ChangeLog:11
&gt; &gt; +        * js/regexp-named-capture-groups-expected.txt:
&gt; &gt; +        * js/script-tests/regexp-named-capture-groups.js:
&gt; 
&gt; Can we add these tests in JSTests/stress, and skip them for 32bit
&gt; architectures? We will see failures in watchOS ARMv7k.

Yeah, I can do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712231</commentid>
    <comment_count>8</comment_count>
      <attachid>414055</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-04 18:43:36 -0800</bug_when>
    <thetext>Comment on attachment 414055
Updated Patch addressing test failures

Removing r? for now since the spec will be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720202</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-17 15:56:18 -0800</bug_when>
    <thetext>https://github.com/tc39/proposal-regexp-match-indices/pull/49 Now, &quot;d&quot; flag is merged, so we need to update to integrate &quot;d&quot; flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722114</commentid>
    <comment_count>10</comment_count>
      <attachid>418302</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-01-25 10:15:30 -0800</bug_when>
    <thetext>Created attachment 418302
Patch using &apos;d&apos; flag conforming to latest proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722184</commentid>
    <comment_count>11</comment_count>
      <attachid>418302</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-25 12:04:35 -0800</bug_when>
    <thetext>Comment on attachment 418302
Patch using &apos;d&apos; flag conforming to latest proposal

View in context: https://bugs.webkit.org/attachment.cgi?id=418302&amp;action=review

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.h:106
&gt; +            array-&gt;putDirect(vm, vm.propertyNames-&gt;indices, indicesArray);

I think this is causing GC and failure in mac-debug-wk1 bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722207</commentid>
    <comment_count>12</comment_count>
      <attachid>418302</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-25 12:44:30 -0800</bug_when>
    <thetext>Comment on attachment 418302
Patch using &apos;d&apos; flag conforming to latest proposal

View in context: https://bugs.webkit.org/attachment.cgi?id=418302&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.h:106
&gt;&gt; +            array-&gt;putDirect(vm, vm.propertyNames-&gt;indices, indicesArray);
&gt; 
&gt; I think this is causing GC and failure in mac-debug-wk1 bot.

We need to set this property at the end of createRegExpMatchesArray (after ensuring GC is ok).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722224</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-25 13:09:44 -0800</bug_when>
    <thetext>Since RegExpMatchesArray&apos;s structure is different based on &apos;d&apos; flag. This means that we also need to change DFG AbstractInterpreter&apos;s code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722225</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-25 13:10:11 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; Since RegExpMatchesArray&apos;s structure is different based on &apos;d&apos; flag. This
&gt; means that we also need to change DFG AbstractInterpreter&apos;s code.

  2558     case RegExpExec:
  2559     case RegExpExecNonGlobalOrSticky:
  2560         if (node-&gt;op() == RegExpExec) {
  2561             // Even if we&apos;ve proven known input types as RegExpObject and String,
  2562             // accessing lastIndex is effectful if it&apos;s a global regexp.
  2563             clobberWorld();
  2564         }
  2565
  2566         if (JSValue globalObjectValue = forNode(node-&gt;child1()).m_value) {
  2567             if (JSGlobalObject* globalObject = jsDynamicCast&lt;JSGlobalObject*&gt;(m_vm, globalObjectValue)) {
  2568                 if (!globalObject-&gt;isHavingABadTime()) {
  2569                     m_graph.watchpoints().addLazily(globalObject-&gt;havingABadTimeWatchpoint());
  2570                     RegisteredStructureSet structureSet;
  2571                     structureSet.add(m_graph.registerStructure(globalObject-&gt;regExpMatchesArrayStructure()));
  2572                     setForNode(node, structureSet);
  2573                     forNode(node).merge(SpecOther);
  2574                     break;
  2575                 }
  2576             }
  2577         }
  2578         setTypeForNode(node, SpecOther | SpecArray);
  2579         break;

Whether we can use regExpMatchesArrayStructure() depends on &quot;d&quot; flag of RegExp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723324</commentid>
    <comment_count>15</comment_count>
      <attachid>418302</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-28 01:34:24 -0800</bug_when>
    <thetext>Comment on attachment 418302
Patch using &apos;d&apos; flag conforming to latest proposal

Clearing the flag for now since we have several things which need to be solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730529</commentid>
    <comment_count>16</comment_count>
      <attachid>420713</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-02-17 14:21:18 -0800</bug_when>
    <thetext>Created attachment 420713
Updated patch with &apos;d&apos; flag and recommended fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730648</commentid>
    <comment_count>17</comment_count>
      <attachid>420713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-17 16:51:07 -0800</bug_when>
    <thetext>Comment on attachment 420713
Updated patch with &apos;d&apos; flag and recommended fixes

View in context: https://bugs.webkit.org/attachment.cgi?id=420713&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2628
&gt; +                    // If regExp is unknown, we need to put both regExp MatchesArray structure variants in our set.
&gt; +                    if (!regExp || !regExp-&gt;hasIndices())
&gt; +                        structureSet.add(m_graph.registerStructure(globalObject-&gt;regExpMatchesArrayStructure()));
&gt; +                    if (!regExp || regExp-&gt;hasIndices())
&gt; +                        structureSet.add(m_graph.registerStructure(globalObject-&gt;regExpMatchesIndicesArrayStructure()));

`regExpMatchesIndicesArrayStructure` is structure for array of indices property. This is not the result array&apos;s structure.
We need to add `regExpMatchesArrayWithIndicesStructure`, and need to pre-bake the structure which includes indices property, and use this structure when creating the result array.

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.h:35
&gt;  static const PropertyOffset RegExpMatchesArrayGroupsPropertyOffset = 102;

We should add PropertyOffset for RegExpMatchesArrayIndicesPropertyOffset. And we should pre-bake structure for that RegExpMatchesArray.

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.h:89
&gt;      Structure* matchStructure = globalObject-&gt;regExpMatchesArrayStructure();

matchStructure should be different if indices property exist.

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.h:221
&gt; +    if (createIndices)
&gt; +        array-&gt;putDirect(vm, vm.propertyNames-&gt;indices, indicesArray);

We should set this inside setProperties by using RegExpMatchesArrayIndicesPropertyOffset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730911</commentid>
    <comment_count>18</comment_count>
      <attachid>420842</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-02-18 10:24:07 -0800</bug_when>
    <thetext>Created attachment 420842
Updated patch addressing review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730920</commentid>
    <comment_count>19</comment_count>
      <attachid>420842</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-18 10:45:39 -0800</bug_when>
    <thetext>Comment on attachment 420842
Updated patch addressing review comments

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730948</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2021-02-18 11:16:27 -0800</bug_when>
    <thetext>Committed r273086 (234284@main): &lt;https://commits.webkit.org/234284@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410711</attachid>
            <date>2020-10-06 16:24:48 -0700</date>
            <delta_ts>2020-11-11 18:24:29 -0800</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>202475-wip1.patch</filename>
            <type>text/plain</type>
            <size>18468</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjgwODIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTEwLTA2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5hYmxlZCBidWlsdC1pbnMvUmVnRXhwL21hdGNoLWluZGljZXMgdGVzdHMuCisKKyAgICAgICAg
KiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTEwLTA1ICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICAlVHlwZWRBcnJheSUuZnJvbSBtdXN0IGRv
IG1hcHBpbmcgYW5kIHB1dHRpbmcgaW4gbG9ja3N0ZXAKSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwJKHJl
dmlzaW9uIDI2ODA1OCkKKysrIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtMjIsNyArMjIsNiBAQCBza2lwOgogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhv
c3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI0NzUKLSAgICAtIHJlZ2V4cC1tYXRjaC1pbmRpY2VzCiAgICAgLSB0b3AtbGV2ZWwt
YXdhaXQKICAgICAtIEludGwuTGlzdEZvcm1hdAogICBwYXRoczoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4MDU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTA2ICBNaWNo
YWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVu
dCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzLgorCisgICAg
ICAgIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwcm9w
b3NhbC4gIEl0IGluY3VycyBhIHBlcmZvcm1hbmNlIHBlbmFsdHkgZm9yIGV4aXN0aW5nCisgICAg
ICAgIFJlZ0V4cCBjb2RlIHNpbmNlIGluIG1hdGVyaWFsaXplcyBhbGwgdGhlIHJlcXVpcmVkIHBy
b3BlcnRpZXMgZXZlcnkgdGltZSB0aGVyZSBpcyBhIG1hdGNoLgorICAgICAgICBTaW5jZSB0aGlz
IGlzIGEgbmV3IHByb3Bvc2FsLCB0aGVyZSBkb2Vzbid0IGV4aXN0IGFueSBjb2RlIHRoYXQgd291
bGQgY29uc3VtZSB0aGUgbmV3IHByb3BlcnRpZXMuCisKKyAgICAgICAgVGhlIHBlcmZvcm1hbmNl
IG1pdGlnYXRpb24gcGxhbiBpcyB0byBsYXppbHkgbWF0ZXJpYWxpemUgdGhlICJpbmRpY2VzIiBw
cm9wZXJ0eSBvbiBmaXJzdCBhY2Nlc3MuCisKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmZpcmVXYXRjaHBvaW50QW5kTWFrZUFsbEFycmF5U3RydWN0dXJlc1Nsb3dQdXQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVn
RXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFbXB0eVJlZ0V4
cE1hdGNoZXNBcnJheSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVN0cnVjdHVyZUltcGwpOgorICAg
ICAgICAoSlNDOjpjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OmNy
ZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpj
cmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKwogMjAyMC0xMC0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgJVR5cGVkQXJyYXklLmZyb20gbXVzdCBkbyBtYXBw
aW5nIGFuZCBwdXR0aW5nIGluIGxvY2tzdGVwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDI2ODA1OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQAogICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAg
ICBtYWNybyhpZ25vcmVQdW5jdHVhdGlvbikgXAogICAgIG1hY3JvKGluZGV4KSBcCisgICAgbWFj
cm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGluZmVycmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0
KSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25Db3VudCkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY4MDU4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OTIsNiArNzkyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0s
IHRoaXMpKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlz
KSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CkBAIC0xNzI1LDYgKzE3MjYs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaXJlV2F0Y2hwb2ludEFuZE1hCiAgICAgU3RydWN0
dXJlKiBzbG93UHV0U3RydWN0dXJlOwogICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKHZtLCB0aGlzKTsKICAgICBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworICAg
IHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1
dFN0cnVjdHVyZSh2bSwgdGhpcyk7CisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKICAgICBzbG93UHV0U3RydWN0dXJlID0g
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93UHV0U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKIApAQCAtMjAwMCw2ICsyMDAzLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHRoaXNPYmplY3QtPm1fZGF0
YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jl
Z0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI2
ODA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0MDEsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9i
amVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxl
UmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKQEAgLTc5
NCw2ICs3OTUsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQ
cm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vz
c29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1h
dGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVs
ZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJ
KHJldmlzaW9uIDI2ODA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgSlNBcnJh
eSogY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzQXJyYXkoSgogICAgIGFycmF5LT5wdXREaXJlY3RX
aXRob3V0QmFycmllcihSZWdFeHBNYXRjaGVzQXJyYXlJbmRleFByb3BlcnR5T2Zmc2V0LCBqc051
bWJlcigtMSkpOwogICAgIGFycmF5LT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdFeHBNYXRj
aGVzQXJyYXlJbnB1dFByb3BlcnR5T2Zmc2V0LCBpbnB1dCk7CiAgICAgYXJyYXktPnB1dERpcmVj
dFdpdGhvdXRCYXJyaWVyKFJlZ0V4cE1hdGNoZXNBcnJheUdyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBq
c1VuZGVmaW5lZCgpKTsKKyAgICBhcnJheS0+cHV0RGlyZWN0V2l0aG91dEJhcnJpZXIoUmVnRXhw
TWF0Y2hlc0FycmF5SW5kaWNlc1Byb3BlcnR5T2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKICAgICBy
ZXR1cm4gYXJyYXk7CiB9CiAKQEAgLTgxLDYgKzgyLDE3IEBAIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZUltcGwoVk0KICAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1hdGNoZXNB
cnJheUlucHV0UHJvcGVydHlPZmZzZXQpOwogICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmdyb3Vw
cywgMCwgb2Zmc2V0KTsKICAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1hdGNoZXNBcnJheUdy
b3Vwc1Byb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRpY2VzLCAw
LCBvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0Y2hlc0FycmF5SW5kaWNl
c1Byb3BlcnR5T2Zmc2V0KTsKKyAgICByZXR1cm4gc3RydWN0dXJlOworfQorCitzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCit7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5ncm91cHMsIDAsIG9mZnNldCk7CisgICAg
QVNTRVJUKG9mZnNldCA9PSBSZWdFeHBNYXRjaGVzSW5kaWNlc0dyb3Vwc1Byb3BlcnR5T2Zmc2V0
KTsKICAgICByZXR1cm4gc3RydWN0dXJlOwogfQogCkBAIC04OSw5ICsxMDEsMTkgQEAgU3RydWN0
dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1YwogICAgIHJldHVybiBjcmVhdGVTdHJ1
Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aENvbnRpZ3VvdXMpOwogfQogCitT
dHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVJbmRp
Y2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhDb250aWd1b3VzKTsK
K30KKwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gY3Jl
YXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlKTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5
U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGNyZWF0ZUluZGljZXNTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3Qs
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCShyZXZpc2lvbiAyNjgwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBSZWdFeHBNYXRj
aGVzQXJyYXlJbmRleFByb3BlcnR5T2Zmc2V0ID0gMTAwOwogc3RhdGljIGNvbnN0IFByb3BlcnR5
T2Zmc2V0IFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0UHJvcGVydHlPZmZzZXQgPSAxMDE7CiBzdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0FycmF5R3JvdXBzUHJvcGVydHlP
ZmZzZXQgPSAxMDI7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0Fy
cmF5SW5kaWNlc1Byb3BlcnR5T2Zmc2V0ID0gMTAzOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zm
c2V0IFJlZ0V4cE1hdGNoZXNJbmRpY2VzR3JvdXBzUHJvcGVydHlPZmZzZXQgPSAxMDA7CiAKIEFM
V0FZU19JTkxJTkUgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNB
cnJheShPYmplY3RJbml0aWFsaXphdGlvblNjb3BlJiBzY29wZSwgR0NEZWZlcnJhbENvbnRleHQq
IGRlZmVycmFsQ29udGV4dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxM
ZW5ndGgpCiB7CkBAIC03Niw2ICs3OCw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRl
UmVnRXhwTWF0Y2gKICAgICByZXN1bHQuZW5kID0gc3VicGF0dGVyblJlc3VsdHNbMV07CiAgICAg
CiAgICAgSlNBcnJheSogYXJyYXk7CisgICAgSlNBcnJheSogaW5kaWNlc0FycmF5OwogCiAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGhhbmRsZSBhcnJheSBhbGxvY2F0aW9uIGVycm9ycyBncmFj
ZWZ1bGx5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUxNDQKQEAgLTgzLDIzICs4Niw0NiBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoCiAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBh
dHRlcm5zKCk7CiAgICAgYm9vbCBoYXNOYW1lZENhcHR1cmVzID0gcmVnRXhwLT5oYXNOYW1lZENh
cHR1cmVzKCk7CiAgICAgSlNPYmplY3QqIGdyb3VwcyA9IGhhc05hbWVkQ2FwdHVyZXMgPyBjb25z
dHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkpIDogbnVsbHB0cjsKKyAgICBKU09iamVjdCogaW5kaWNlc0dyb3VwcyA9IGhhc05h
bWVkQ2FwdHVyZXMgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpIDogbnVsbHB0cjsKICAgICBTdHJ1Y3R1cmUqIG1h
dGNoU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUo
KTsKKyAgICBTdHJ1Y3R1cmUqIGluZGljZXNTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlZ0V4
cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKTsKIAogICAgIGF1dG8gc2V0UHJvcGVydGll
cyA9IFsmXSAoKSB7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1hdGNoZXNB
cnJheUluZGV4UHJvcGVydHlPZmZzZXQsIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwogICAgICAg
ICBhcnJheS0+cHV0RGlyZWN0KHZtLCBSZWdFeHBNYXRjaGVzQXJyYXlJbnB1dFByb3BlcnR5T2Zm
c2V0LCBpbnB1dCk7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1hdGNoZXNB
cnJheUdyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBoYXNOYW1lZENhcHR1cmVzID8gZ3JvdXBzIDoganNV
bmRlZmluZWQoKSk7CisgICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1hdGNoZXNB
cnJheUluZGljZXNQcm9wZXJ0eU9mZnNldCwgaW5kaWNlc0FycmF5KTsKKworICAgICAgICBpbmRp
Y2VzQXJyYXktPnB1dERpcmVjdCh2bSwgUmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0
eU9mZnNldCwgaGFzTmFtZWRDYXB0dXJlcyA/IGluZGljZXNHcm91cHMgOiBqc1VuZGVmaW5lZCgp
KTsKIAogICAgICAgICBBU1NFUlQoIWFycmF5LT5idXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIo
KS0+cHJlQ2FwYWNpdHkobWF0Y2hTdHJ1Y3R1cmUpKTsKICAgICAgICAgYXV0byBjYXBhY2l0eSA9
IG1hdGNoU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICBhdXRvIHNpemUg
PSBtYXRjaFN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOwogICAgICAgICBnY1NhZmVaZXJvTWVt
b3J5KHN0YXRpY19jYXN0PEpTVmFsdWUqPihhcnJheS0+YnV0dGVyZmx5KCktPmJhc2UoMCwgY2Fw
YWNpdHkpKSwgKGNhcGFjaXR5IC0gc2l6ZSkgKiBzaXplb2YoSlNWYWx1ZSkpOworCisgICAgICAg
IEFTU0VSVCghaW5kaWNlc0FycmF5LT5idXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+cHJl
Q2FwYWNpdHkoaW5kaWNlc1N0cnVjdHVyZSkpOworICAgICAgICBhdXRvIGluZGljZXNDYXBhY2l0
eSA9IGluZGljZXNTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIGF1dG8g
aW5kaWNlc1NpemUgPSBpbmRpY2VzU3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCk7CisgICAgICAg
IGdjU2FmZVplcm9NZW1vcnkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KGluZGljZXNBcnJheS0+YnV0
dGVyZmx5KCktPmJhc2UoMCwgaW5kaWNlc0NhcGFjaXR5KSksIChpbmRpY2VzQ2FwYWNpdHkgLSBp
bmRpY2VzU2l6ZSkgKiBzaXplb2YoSlNWYWx1ZSkpOworICAgIH07CisKKyAgICBhdXRvIGNyZWF0
ZUluZGV4QXJyYXkgPSBbJl0gKEdDRGVmZXJyYWxDb250ZXh0JiBkZWZlcnJhbENvbnRleHQsIGlu
dCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNj
b3BlKHZtKTsKKworICAgICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQ29udGlndW91cyksIDIpOworICAgICAgICByZXN1bHQtPmluaXRpYWxpemVJbmRleFdpdGhv
dXRCYXJyaWVyKHNjb3BlLCAwLCBqc051bWJlcihzdGFydCkpOworICAgICAgICByZXN1bHQtPmlu
aXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAxLCBqc051bWJlcihlbmQpKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKIAogICAgIGlmIChVTkxJS0VM
WShnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKICAgICAgICAgR0NEZWZlcnJh
bENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXApOwotICAgICAgICBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLSAgICAgICAgYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgbWF0Y2hT
dHJ1Y3R1cmUsIG51bVN1YnBhdHRlcm5zICsgMSk7CisgICAgICAgIE9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGUgbWF0Y2hlc0FycmF5U2NvcGUodm0pOworICAgICAgICBPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlIGluZGljZXNBcnJheVNjb3BlKHZtKTsKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChtYXRjaGVzQXJyYXlTY29wZSwgJmRl
ZmVycmFsQ29udGV4dCwgbWF0Y2hTdHJ1Y3R1cmUsIG51bVN1YnBhdHRlcm5zICsgMSk7CisKKyAg
ICAgICAgaW5kaWNlc0FycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3Ry
aWN0ZWQoaW5kaWNlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGdsb2JhbE9iamVjdC0+
cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSgpLCBudW1TdWJwYXR0ZXJucyArIDEp
OwogCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0IG9m
IG1lbW9yeSBlcnJvciBoZXJlLCBidXQKICAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFu
Z2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwpAQCAtMTA5LDIxICsx
MzUsMzAgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogCiAgICAg
ICAgIHNldFByb3BlcnRpZXMoKTsKICAgICAgICAgCi0gICAgICAgIGFycmF5LT5pbml0aWFsaXpl
SW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAm
ZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0
LnN0YXJ0KSk7Ci0gICAgICAgIAorICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91
dEJhcnJpZXIobWF0Y2hlc0FycmF5U2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwg
JmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3Vs
dC5zdGFydCkpOworCisgICAgICAgIGluZGljZXNBcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91
dEJhcnJpZXIoaW5kaWNlc0FycmF5U2NvcGUsIDAsIGNyZWF0ZUluZGV4QXJyYXkoZGVmZXJyYWxD
b250ZXh0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQpKTsKKwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAgICAgIGludCBz
dGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpXTsKICAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWU7Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9
IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHN0YXJ0
LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpOwotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgZW5k
ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHN0YXJ0
LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0aWFsaXpl
SW5kZXhXaXRob3V0QmFycmllcihpbmRpY2VzQXJyYXlTY29wZSwgaSwgY3JlYXRlSW5kZXhBcnJh
eShkZWZlcnJhbENvbnRleHQsIHN0YXJ0LCBlbmQpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgYXJyYXkt
PmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihpbmRp
Y2VzQXJyYXlTY29wZSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXJy
YXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKG1hdGNoZXNBcnJheVNjb3BlLCBpLCB2
YWx1ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHQ0RlZmVycmFsQ29udGV4
dCBkZWZlcnJhbENvbnRleHQodm0uaGVhcCk7Ci0gICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUgc2NvcGUodm0pOwotICAgICAgICBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRS
ZWdFeHBNYXRjaGVzQXJyYXkoc2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJl
LCBudW1TdWJwYXR0ZXJucyArIDEpOworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
IG1hdGNoZXNBcnJheVNjb3BlKHZtKTsKKyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZSBpbmRpY2VzQXJyYXlTY29wZSh2bSk7CisgICAgICAgIGFycmF5ID0gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShtYXRjaGVzQXJyYXlTY29wZSwgJmRlZmVycmFsQ29u
dGV4dCwgbWF0Y2hTdHJ1Y3R1cmUsIG51bVN1YnBhdHRlcm5zICsgMSk7CisKKyAgICAgICAgaW5k
aWNlc0FycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShpbmRp
Y2VzQXJyYXlTY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRj
aGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCksIG51bVN1YnBhdHRlcm5zICsgMSk7CiAKICAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVy
cm9yIGhlcmUsIGJ1dAogICAgICAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91
bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCkBAIC0xMzMsMTYgKzE2OCwyMSBAQCBB
TFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgICAgIAogICAgICAg
ICBzZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIAotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRl
ZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5z
dGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4V2l0aG91dEJhcnJpZXIobWF0Y2hlc0FycmF5U2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNv
bHZlZCh2bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVu
ZCAtIHJlc3VsdC5zdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICBpbmRpY2Vz
QXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNBcnJheVNjb3BlLCAw
LCBjcmVhdGVJbmRleEFycmF5KGRlZmVycmFsQ29udGV4dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQu
ZW5kKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1
YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1
bHRzWzIgKiBpXTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICog
aSArIDFdOwogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmIChzdGFy
dCA+PSAwKQotICAgICAgICAgICAgICAgIHZhbHVlID0ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZt
LCAmZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBp
ICsgMV0gLSBzdGFydCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoc3RhcnQg
Pj0gMCkgeworICAgICAgICAgICAgICAgIHZhbHVlID0ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZt
LCAmZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICBpbmRpY2VzQXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGlj
ZXNBcnJheVNjb3BlLCBpLCBjcmVhdGVJbmRleEFycmF5KGRlZmVycmFsQ29udGV4dCwgc3RhcnQs
IGVuZCkpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpz
VW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJh
cnJpZXIoc2NvcGUsIGksIHZhbHVlLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgICAg
ICAgICBpbmRpY2VzQXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNB
cnJheVNjb3BlLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcnJheS0+
aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIobWF0Y2hlc0FycmF5U2NvcGUsIGksIHZhbHVl
LCBBcnJheVdpdGhDb250aWd1b3VzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTUzLDggKzE5
MywxMCBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgaWYg
KGhhc05hbWVkQ2FwdHVyZXMpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBu
dW1TdWJwYXR0ZXJuczsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgZ3JvdXBOYW1lID0gcmVn
RXhwLT5nZXRDYXB0dXJlR3JvdXBOYW1lKGkpOwotICAgICAgICAgICAgaWYgKCFncm91cE5hbWUu
aXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKCFncm91cE5hbWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgZ3JvdXBzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIGdyb3VwTmFtZSksIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAgICAgICAg
ICAgIGluZGljZXNHcm91cHMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgZ3JvdXBOYW1lKSwgaW5kaWNlc0FycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBhcnJheTsKQEAgLTE3Myw2ICsy
MTUsOCBAQCBpbmxpbmUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5CiB9CiBKU0Fy
cmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0dsb2JhbE9iamVjdCosIEpTU3Ry
aW5nKiwgUmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOworU3RydWN0dXJl
KiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQ
dXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="commit-queue"
          id="426736"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413897</attachid>
            <date>2020-11-11 18:24:29 -0800</date>
            <delta_ts>2020-11-13 09:41:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>217975-2.patch</filename>
            <type>text/plain</type>
            <size>65184</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjk3MTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDIwLTExLTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TmV3IHRlc3QgYWxvbmcgd2l0aCBlbmFibGluZyB0aGUgUmVnRXhwIE1hdGNoIEluZGljZXMgdGVz
dDI2MiB0ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9kZmctc3RyZW5ndGgtcmVkdWN0aW9uLWZv
ci1yZWdleHAtc2hvdWxkLWluZGljZXMtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoK
KworMjAyMC0xMS0xMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBJbXBsZW1lbnQgUmVnRXhwIE1hdGNoIEluZGljZXMgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZWQgYnVpbHQt
aW5zL1JlZ0V4cC9tYXRjaC1pbmRpY2VzIHRlc3RzLgorCisgICAgICAgICogdGVzdDI2Mi9jb25m
aWcueWFtbDoKKwogMjAyMC0xMS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB3cm9uZyB0ZXN0cyBhdCB0aGUgZmluYWwgY2xl
YW4gdXAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RmZy1zdHJlbmd0aC1yZWR1Y3Rpb24tZm9yLXJl
Z2V4cC1zaG91bGQtaW5kaWNlcy1wcm9wZXJ0eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9kZmctc3RyZW5ndGgtcmVkdWN0aW9uLWZvci1yZWdleHAtc2hvdWxkLWluZGljZXMtcHJv
cGVydHkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZGZnLXN0cmVuZ3RoLXJl
ZHVjdGlvbi1mb3ItcmVnZXhwLXNob3VsZC1pbmRpY2VzLXByb3BlcnR5LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgciA9IC8oYSkvOworICAgIGxldCBtID0gci5leGVjKCdh
Jyk7CisgICAgc2hvdWxkQmUobS5pbmRpY2VzWzBdWzBdLCAwKTsKKyAgICAvLyBzaG91bGRCZSht
LmluZGljZXNbMF1bMV0sIDEpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAobGV0IGk9MDsg
aTwxMDAwMDA7IGkrKykKKyAgICB0ZXN0KCk7CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCShyZXZpc2lv
biAyNjk3MDkpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDcgKzIzLDYgQEAgc2tpcDoKICAgICAtIGNsZWFudXBTb21lCiAgICAgLSBob3N0LWdj
LXJlcXVpcmVkCiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1Ci0gICAgLSByZWdleHAtbWF0Y2gtaW5kaWNlcwogICAgIC0gdG9wLWxldmVsLWF3YWl0
CiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjk3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzggQEAKKzIwMjAtMTEtMTEgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFJlZ0V4cCBNYXRj
aCBJbmRpY2VzIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDI0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGltcGxlbWVudGVzIHRoZSBzdGFnZSAzIHByb3Bvc2FsIGZvciBSZWdF
eHAgTWF0Y2ggSW5kaWNlcyAoaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVnZXhw
LW1hdGNoLWluZGljZXMpLgorICAgICAgICBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhlICJp
bmRpY2VzIiBwcm9wZXJ0eSBhbmQgaXRzIGNvbnRlbnRzIGFyZSBsYXppbHkgbWF0ZXJpYWxpemVk
LgorICAgICAgICBUaHJvdWdoIHRlc3RpbmcsIGl0IHdhcyBtb3JlIHBlcmZvcm1hbnQgdG8gc2F2
ZSB0aGUgUmVnRXhwIGFuZCB0aGUgc3RhcnQgb2Zmc2V0IGFuZCByZS1ydW4gdGhlIG1hdGNoCisg
ICAgICAgIHRvIGdldCB0aGUgaW5kaWNlcyBpbnRlZ2VyIHZhbHVlcy4gIEFmdGVyIHdlIG1hdGVy
aWFsaXplIHRoZSAiaW5kaWNlcyIgdHJlZSwgd2Ugc2V0IGEgZmxhZyBzbyB0aGF0CisgICAgICAg
IHN1YnNlcXVlbnQgbWF0Y2hlcyB3aWxsIGZpbGwgaW4gdGhlIGluZGljZXMgZWFnZXJseS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNw
cDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
QXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmlzQXJyYXlTbG93SW5saW5lKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5Lmg6CisgICAgICAgIChKU0M6OmlzSlNBcnJheSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZpcmVXYXRjaHBvaW50QW5kTWFrZUFs
bEFycmF5U3RydWN0dXJlc1Nsb3dQdXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJl
c3VsdDo6bGFzdFJlc3VsdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXM6On5SZWdFeHBNYXRjaGVzKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cE1hdGNoZXM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzOjpt
YXRlcmlhbGl6ZUluZGljZXNQcm9wZXJ0eUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RW1wdHlSZWdFeHBNYXRjaGVzKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5kaWNlc1N0cnVjdHVy
ZUltcGwpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc1Nsb3dQdXRTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc1N0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzU2xvd1B1dFN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdFeHBN
YXRjaGVzOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXM6OnN1
YnNwYWNlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6Y3JlYXRlV2l0aEJ1dHRl
cmZseSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXM6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cE1hdGNoZXM6OnNldFJlc3VsdHNEYXRhKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwTWF0Y2hlczo6b2Zmc2V0T2ZSZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVz
OjpvZmZzZXRPZlN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6b2Zm
c2V0T2ZJbmRpY2VzTWF0ZXJpYWxpemVkKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6
bWF0ZXJpYWxpemVJbmRpY2VzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVz
OjpSZWdFeHBNYXRjaGVzKToKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJl
Z0V4cE1hdGNoZXMpOgorICAgICAgICAoSlNDOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJp
Y3RlZFJlZ0V4cE1hdGNoZXMpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogeWFyci9ZYXJyRmxhZ3MuaDoKKwogMjAy
MC0xMS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIEltcGxlbWVudCBJbnRsLkRhdGVUaW1lRm9ybWF0LmZvcm1hdFJhbmdlVG9QYXJ0cwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjY5NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NjIsNyArOTYy
LDcgQEAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0
LmNwcAogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvUmVnRXhwR2xvYmFs
RGF0YS5jcHAKLXJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAorcnVudGltZS9SZWdFeHBN
YXRjaGVzLmNwcAogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAKIHJ1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY5NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTExNTYsNiArMTE1Niw3IEBACiAJCTY1N0NGNDU5MTlCRjY2NjIw
MDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU4ODI0QUYxRTVD
RkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU4
RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAv
KiBWTUVudHJ5UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNjU5OEIyOUQyNTJFOTE4NTAwREI0NTMxIC8qIFJlZ0V4cE1hdGNoZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OThCMjlDMjUy
RTkxODUwMERCNDUzMSAvKiBSZWdFeHBNYXRjaGVzLmggKi87IH07CiAJCTY1OUNEQTVCMUY2NzUz
RjIwMEQzRTUzRiAvKiBZYXJyVW5pY29kZVByb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUNEQTVBMUY2NzUwOTgwMEQzRTUzRiAvKiBZ
YXJyVW5pY29kZVByb3BlcnRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NUI4MzkyRTFCQUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3Zl
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjgz
OTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5oICovOyB9OwogCQk2QTM4Q0ZB
QTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNTdGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyog
QXN5bmNTdGFja1RyYWNlLmggKi87IH07CkBAIC0zOTU3LDYgKzM5NTgsOCBAQAogCQk2NThEM0E1
NTE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk1FbnRyeVJlY29yZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5s
YW5nLm9iamNwcDsgfTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5ODdGMkYxNjgyOEE3RTAwM0My
RjhEIC8qIFVudXNlZFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW51c2VkUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTk4QjI5QzI1
MkU5MTg1MDBEQjQ1MzEgLyogUmVnRXhwTWF0Y2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBNYXRjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1OThCMjlFMjUyRTkxQUEwMERCNDUzMSAvKiBSZWdFeHBNYXRjaGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cE1hdGNoZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTlDREE1OTFGNjc1MDk4MDBEM0U1M0YgLyogWWFyclVuaWNv
ZGVQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJVbmljb2RlUHJvcGVydGllcy5jcHA7IHBhdGggPSB5YXJyL1lhcnJVbmljb2RlUHJvcGVydGll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUNEQTVBMUY2NzUwOTgwMEQz
RTUzRiAvKiBZYXJyVW5pY29kZVByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmg7IHBhdGggPSB5YXJyL1lhcnJVbmljb2Rl
UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUE5NDYxMzFDOEU5
RjIwMDBBNzIwOUEgLyogZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRlWWFyckNhbm9uaWNhbGl6ZVVuaWNv
ZGU7IHBhdGggPSB5YXJyL2dlbmVyYXRlWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGU7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjkyLDYgKzc2OTUsOCBAQAogCQkJCUUzMjU5NTYzMjFG
REEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovLAogCQkJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8sCiAJCQkJQTE3MTJCNDAx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovLAorCQkJCTY1OThCMjlFMjUyRTkxQUEw
MERCNDUzMSAvKiBSZWdFeHBNYXRjaGVzLmNwcCAqLywKKwkJCQk2NTk4QjI5QzI1MkU5MTg1MDBE
QjQ1MzEgLyogUmVnRXhwTWF0Y2hlcy5oICovLAogCQkJCTg2Rjc1RUZEMTUxQzA2MkYwMDdDOUJB
MyAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwICovLAogCQkJCTkzQ0VEREZCMEVBOTFFRTYwMDI1
OEVCRSAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuaCAqLywKIAkJCQlGNjkyQTg3QjAyNTU1OTdEMDFG
RjYwRjcgLyogUmVnRXhwT2JqZWN0LmNwcCAqLywKQEAgLTkxMDMsNiArOTEwOCw3IEBACiAJCQkJ
MEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1OThCMjlEMjUyRTkxODUwMERCNDUzMSAvKiBSZWdF
eHBNYXRjaGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MjIg
LyogQVJNNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUw
RkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjY5NzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXJzZUludC5oIgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGFJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0
Y2hlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZXBh
dGNoLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC0xMTY4LDEzICsxMTY4LDEz
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZWdFeHAKIAogICAgIHVuc2ln
bmVkIGxhc3RJbmRleCA9IDA7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwotICAgIEpTQXJyYXkq
IGFycmF5ID0gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KHZtLCBnbG9iYWxPYmplY3QsIHN0cmlu
ZywgaW5wdXQsIHJlZ0V4cCwgbGFzdEluZGV4LCByZXN1bHQpOworICAgIFJlZ0V4cE1hdGNoZXMq
IG1hdGNoZXMgPSBjcmVhdGVSZWdFeHBNYXRjaGVzKHZtLCBnbG9iYWxPYmplY3QsIHN0cmluZywg
aW5wdXQsIHJlZ0V4cCwgbGFzdEluZGV4LCByZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7Ci0gICAgaWYgKCFhcnJheSkKKyAgICBpZiAoIW1hdGNoZXMpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgZ2xvYmFsT2JqZWN0
LT5yZWdFeHBHbG9iYWxEYXRhKCkucmVjb3JkTWF0Y2godm0sIGdsb2JhbE9iamVjdCwgcmVnRXhw
LCBzdHJpbmcsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJheSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtYXRjaGVzKTsKIH0KIAogSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdFN0cmluZywgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVj
dCwgSlNTdHJpbmcqIGFyZ3VtZW50KSkKQEAgLTI5MjUsNiArMjkyNSw4IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdSYXcKIAogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGUo
KSA9PSBKU1R5cGU6OkFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4oSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgc3RydWN0dXJlLCBi
dXR0ZXJmbHkpKTsKKyAgICBpZiAoc3RydWN0dXJlID09IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0
KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpKQorICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PGNoYXIqPihSZWdFeHBNYXRjaGVzOjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxs
cHRyLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkpOwogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KEpTRmluYWxPYmplY3Q6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgYnV0
dGVyZmx5KSk7CiB9CiAKQEAgLTI5NDEsNiArMjk0Myw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdPYmoKICAgICAKICAgICBpZiAoc3RydWN0dXJlLT50eXBlKCkgPT0g
SlNUeXBlOjpBcnJheVR5cGUpCiAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0
dGVyZmx5KHZtLCBudWxscHRyLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgaWYgKHN0cnVj
dHVyZSA9PSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUoKSkKKyAgICAgICAgcmV0dXJuIFJlZ0V4cE1hdGNoZXM6OmNyZWF0ZVdpdGhCdXR0ZXJm
bHkodm0sIG51bGxwdHIsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKICAgICByZXR1cm4gSlNGaW5h
bE9iamVjdDo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwog
fQogCkBAIC0yOTYzLDYgKzI5NjcsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3T2JqCiAgICAgCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZSgpID09IEpTVHlwZTo6QXJy
YXlUeXBlKQogICAgICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwg
bnVsbHB0ciwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGlmIChzdHJ1Y3R1cmUgPT0gc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkpCisg
ICAgICAgIHJldHVybiBSZWdFeHBNYXRjaGVzOjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxs
cHRyLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAgICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAJKHJldmlzaW9uIDI2OTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4
LDE4IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNl
IEludGVybmFsRmllbGRPYmplY3RQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkludGVybmFsRmll
bGRPYmplY3RQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVnRXhwTWF0Y2hl
c09yaWdSZWdFeHA6CisgICAgICAgIG91dC5wcmludCgiUmVnRXhwTWF0Y2hlc09yaWdSZWdFeHAi
KTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBSZWdFeHBNYXRjaGVzU3RhcnRPZmZzZXQ6
CisgICAgICAgIG91dC5wcmludCgiUmVnRXhwTWF0Y2hlc1N0YXJ0T2Zmc2V0Iik7CisgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgUmVnRXhwTWF0Y2hlc0luZGljZXNNYXRlcmlhbGl6ZWQ6Cisg
ICAgICAgIG91dC5wcmludCgiUmVnRXhwTWF0Y2hlc0luZGljZXNNYXRlcmlhbGl6ZWQiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMjY5NzA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw5IEBAIGVudW0gUHJvbW90ZWRMb2NhdGlvbktpbmQgewogICAgIE5ld0FycmF5QnVmZmVy
UExvYywKICAgICBSZWdFeHBPYmplY3RSZWdFeHBQTG9jLAogICAgIFJlZ0V4cE9iamVjdExhc3RJ
bmRleFBMb2MsCisgICAgUmVnRXhwTWF0Y2hlc09yaWdSZWdFeHAsCisgICAgUmVnRXhwTWF0Y2hl
c1N0YXJ0T2Zmc2V0LAorICAgIFJlZ0V4cE1hdGNoZXNJbmRpY2VzTWF0ZXJpYWxpemVkLAogfTsK
IAogY2xhc3MgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI2OTcw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2V0
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhw
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyTG9nLmgiCkBAIC0xMzMsNiArMTM0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlUmF3T2JqZQogICAgIEFsbG9jYXRvciBhbGxvY2F0b3I7CiAgICAgaWYgKHN0cnVj
dHVyZS0+dHlwZSgpID09IEpTVHlwZTo6QXJyYXlUeXBlKQogICAgICAgICBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PEpTQXJyYXk+KHZtLCBKU0FycmF5Ojph
bGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSksIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRv
cklmRXhpc3RzKTsKKyAgICBlbHNlIGlmIChzdHJ1Y3R1cmUuZ2V0KCkgPT0gc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkpCisgICAgICAgIGFs
bG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8UmVnRXhwTWF0Y2hl
cz4odm0sIFJlZ0V4cE1hdGNoZXM6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KSwgQWxs
b2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgIGVsc2UKICAgICAgICAgYWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU0ZpbmFsT2JqZWN0
Pih2bSwgSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgaWYgKGFsbG9jYXRvcikgewpA
QCAtMTI0MDcsNiArMTI0MTAsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVy
aWFsaXplTgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorCisg
ICAgICAgIGNhc2UgUmVnRXhwTWF0Y2hlc1N0YXJ0T2Zmc2V0OiB7CisgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoZWRn
ZS0+YXNJbnQzMigpKSwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIFJlZ0V4cE1hdGNoZXM6Om9mZnNldE9mU3RhcnRPZmZzZXQoKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNJbmRpY2Vz
TWF0ZXJpYWxpemVkOiB7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoZWRnZS0+YXNJbnQzMigpKSwKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFJlZ0V4cE1hdGNoZXM6Om9m
ZnNldE9mSW5kaWNlc01hdGVyaWFsaXplZCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwTWF0Y2hlc09yaWdSZWdFeHA6IHsKKyAgICAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQu
c3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwTWF0Y2hlczo6
b2Zmc2V0T2ZSZWdFeHAoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjY5NzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgi
CiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKICNp
bmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNp
bmNsdWRlIDxjc3RkbGliPgpAQCAtNjUxLDcgKzY1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBDcmVhdGUgYW4gYXJyYXkgbW9kZWxpbmcgdGhlIEpTIGFycmF5IHRoYXQgd2Ugd2lsbCB0
cnkgdG8gYWxsb2NhdGUuIFRoaXMgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2lj
YWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVh
ZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3Jl
YXRlUmVnRXhwTWF0Y2hlcyBidXQgb3ZlciBDKysgc3RyaW5ncyBpbnN0ZWFkIG9mIEpTU3RyaW5n
cy4KICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5Owog
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJp
bmcocmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IHJlZ0V4cC0+bnVtU3VicGF0
dGVybnMoKTsgKytpKSB7CkBAIC03MDcsNiArNzA4LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9j
LCBncm91cHNJbmRleCkpOwogCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCByZWdFeHBGcm96ZW5WYWx1ZSwgVW50eXBlZFVzZSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihSZWdF
eHBNYXRjaGVzT3JpZ1JlZ0V4cCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihsYXN0SW5kZXgpLCBLbm93
bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yKFJlZ0V4cE1hdGNoZXNTdGFydE9mZnNldCkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcigwKSwg
S25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0
aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihSZWdFeHBNYXRjaGVzSW5kaWNlc01hdGVyaWFsaXplZCwgUmVnRXhwTWF0Y2hl
czo6b2Zmc2V0T2ZJbmRpY2VzTWF0ZXJpYWxpemVkKCkpKTsKKwogICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAy
Njk3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIK
ICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC0zMjYs
MTEgKzMyNywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgICAg
IGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVj
dHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5h
bE9iamVjdCwgSlNBcnJheSBvciBSZWdFeHBNYXRjaGVzLgogICAgICAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNGaW5hbE9i
amVjdDo6aW5mbygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RydWN0dXJlLT5j
bGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBSZWdFeHBN
YXRjaGVzOjppbmZvKCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1
cHBvcnQgY2VydGFpbiBpbmRleGluZyBzaGFwZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDI2OTcwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU1NldC5o
IgogI2luY2x1ZGUgIkpTV2Vha01hcC5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKICNp
bmNsdWRlICJTeW1ib2wuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewpAQCAt
MTE5LDYgKzEyMCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhKU1JvcGVTdHJpbmdfZmliZXIyLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXIyKCkpIFwK
ICAgICBtYWNybyhKU1Njb3BlX25leHQsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSBcCiAgICAg
bWFjcm8oSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSwgSlNTeW1ib2xUYWJsZU9iamVj
dDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSBcCisgICAgbWFjcm8oUmVnRXhwTWF0Y2hlc19yZWdF
eHAsIFJlZ0V4cE1hdGNoZXM6Om9mZnNldE9mUmVnRXhwKCkpIFwKKyAgICBtYWNybyhSZWdFeHBN
YXRjaGVzX3N0YXJ0T2Zmc2V0LCBSZWdFeHBNYXRjaGVzOjpvZmZzZXRPZlN0YXJ0T2Zmc2V0KCkp
IFwKKyAgICBtYWNybyhSZWdFeHBPYmplY3RfaW5kaWNlc01hdGVyaWFsaXplZCwgUmVnRXhwTWF0
Y2hlczo6b2Zmc2V0T2ZJbmRpY2VzTWF0ZXJpYWxpemVkKCkpIFwKICAgICBtYWNybyhSZWdFeHBP
YmplY3RfcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcsIFJlZ0V4cE9iamVjdDo6
b2Zmc2V0T2ZSZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZygpKSBcCiAgICAgbWFj
cm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRl
eCgpKSBcCiAgICAgbWFjcm8oU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlLCBPQkpFQ1RfT0ZG
U0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxsZWUpKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjk3MDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyODI5LDYgKzEyODI5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN3
aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CiAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAg
ICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNTdGFydE9mZnNldDoKKyAgICAgICAgICAgIGNhc2Ug
UmVnRXhwTWF0Y2hlc0luZGljZXNNYXRlcmlhbGl6ZWQ6CiAgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgpAQCAtMTI4NjcsNiArMTI4NjksOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIEFsbG9jYXRvciBjZWxsQWxsb2NhdG9yOwogICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPnR5cGUoKSA9PSBKU1R5cGU6OkFycmF5VHlwZSkKICAgICAgICAgICAgICAgICAgICAg
Y2VsbEFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNBcnJh
eT4odm0oKSwgSlNBcnJheTo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0
eSgpKSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworCisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0
KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgICAgICBj
ZWxsQWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxSZWdFeHBN
YXRjaGVzPih2bSgpLCBSZWdFeHBNYXRjaGVzOjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlu
bGluZUNhcGFjaXR5KCkpLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjZWxsQWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU0ZpbmFsT2JqZWN0Pih2bSgpLCBK
U0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkp
LCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKQEAgLTEzMTAyLDcgKzEz
MTA3LDI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFzZXRJbmxpbmVPZmZzZXRz
LmdldChpKSkKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5pbnQ2NFpl
cm8sIG1fb3V0LmFkZHJlc3MobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVj
dCwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoaSkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgc3dpdGNo
IChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgUmVnRXhwTWF0Y2hl
c09yaWdSZWdFeHA6CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWVzW2ld
LCBvYmplY3QsIG1faGVhcHMuUmVnRXhwTWF0Y2hlc19yZWdFeHApOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgUmVnRXhwTWF0Y2hlc1N0YXJ0T2Zm
c2V0OgorICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZhbHVlc1tpXSwgb2JqZWN0
LCBtX2hlYXBzLlJlZ0V4cE1hdGNoZXNfc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgUmVnRXhwTWF0Y2hlc0luZGljZXNNYXRl
cmlhbGl6ZWQ6CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmFsdWVzW2ldLCBv
YmplY3QsIG1faGVhcHMuUmVnRXhwT2JqZWN0X2luZGljZXNNYXRlcmlhbGl6ZWQpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG9iamVjdCkpOwogICAg
ICAgICAgICAgbV9vdXQuanVtcChvdXRlckNvbnRpbnVhdGlvbik7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyNjk3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJheVNsb3dJbmwKICAgICAgICAgfQogICAgICAg
ICBKU09iamVjdCogYXJndW1lbnQgPSBwcm94eS0+dGFyZ2V0KCk7CiAKLSAgICAgICAgaWYgKGFy
Z3VtZW50LT50eXBlKCkgPT0gQXJyYXlUeXBlIHx8ICBhcmd1bWVudC0+dHlwZSgpID09IERlcml2
ZWRBcnJheVR5cGUpCisgICAgICAgIGlmIChhcmd1bWVudC0+dHlwZSgpID09IEFycmF5VHlwZSB8
fCBhcmd1bWVudC0+dHlwZSgpID09IERlcml2ZWRBcnJheVR5cGUpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgICAgICBpZiAoYXJndW1lbnQtPnR5cGUoKSAhPSBQcm94eU9iamVjdFR5
cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHJldmlzaW9uIDI2OTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgs
NyBAQAogICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpZ25vcmVQdW5jdHVhdGlv
bikgXAogICAgIG1hY3JvKGluZGV4KSBcCisgICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3Jv
KGluZmVycmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rp
b25Db3VudCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAko
cmV2aXNpb24gMjY5NzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNyArMzA2LDcgQEAgaW5saW5lIEpTQXJyYXkqIGFz
QXJyYXkoSlNWYWx1ZSB2YWx1ZSkKIAogaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2Vs
bCkKIHsKLSAgICBBU1NFUlQoKGNlbGwtPmNsYXNzSW5mbyhjZWxsLT52bSgpKSA9PSBKU0FycmF5
OjppbmZvKCkpID09IChjZWxsLT50eXBlKCkgPT0gQXJyYXlUeXBlKSk7CisvLyAgICAgQVNTRVJU
KChjZWxsLT5jbGFzc0luZm8oY2VsbC0+dm0oKSkgPT0gSlNBcnJheTo6aW5mbygpKSA9PSAoY2Vs
bC0+dHlwZSgpID09IEFycmF5VHlwZSkpOwogICAgIHJldHVybiBjZWxsLT50eXBlKCkgPT0gQXJy
YXlUeXBlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNjk3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3
ICsxODMsNyBAQAogI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmVmbGVjdE9i
amVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiUmVnRXhw
TWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlcy5oIgogI2luY2x1ZGUgIlJl
Z0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlJl
Z0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC03OTUsNyArNzk1LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7
CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc1N0cnVjdHVyZSh2bSwgdGhp
cykpOworICAgIG1fcmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAKICAg
ICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CkBAIC0xNzQyLDggKzE3NDMsMTAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6ZmlyZVdhdGNocG9pbnRBbmRNYQogCiAgICAgLy8gU2FtZSBmb3Ig
YW55IHNwZWNpYWwgYXJyYXkgc3RydWN0dXJlcy4KICAgICBTdHJ1Y3R1cmUqIHNsb3dQdXRTdHJ1
Y3R1cmU7Ci0gICAgc2xvd1B1dFN0cnVjdHVyZSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNs
b3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMpOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVS
ZWdFeHBNYXRjaGVzU2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcyk7CiAgICAgbV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKKyAgICBz
bG93UHV0U3RydWN0dXJlID0gY3JlYXRlUmVnRXhwTWF0Y2hlc0luZGljZXNTbG93UHV0U3RydWN0
dXJlKHZtLCB0aGlzKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKICAgICBzbG93UHV0U3RydWN0dXJlID0g
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93UHV0U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKIApAQCAtMjAyMCw2ICsyMDIzLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHRoaXNPYmplY3QtPm1fZGF0
YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jl
Z0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI2
OTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxNSw2ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9i
amVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxl
UmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKQEAgLTgy
MCw2ICs4MjEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQ
cm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vz
c29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1h
dGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVs
ZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjY5NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDkgQEAgcHVibGljOgogICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVy
biBnbG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmxhZ3MuY29udGFpbnMoWWFycjo6RmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9vbCBk
b3RBbGwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFlhcnI6OkZsYWdzOjpEb3RB
bGwpOyB9CisgICAgYm9vbCBtYXRlcmlhbGl6ZUluZGljaWVzKCkgY29uc3QgeyByZXR1cm4gbV9m
bGFncy5jb250YWlucyhZYXJyOjpGbGFnczo6TWF0ZXJpYWxpemVJbmRpY2VzKTsgfQorICAgIAor
ICAgIHZvaWQgc2V0TWF0ZXJpYWxpemVJbmRpY2llcygpIHsgbV9mbGFncy5hZGQoWWFycjo6Rmxh
Z3M6Ok1hdGVyaWFsaXplSW5kaWNlcyk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHJldmlz
aW9uIDI2OTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
ZFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJS
ZWdFeHBDYWNoZWRSZXN1bHQuaCIKIAogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCi0jaW5jbHVk
ZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsOSArNTUsOSBAQCBKU0FycmF5KiBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Omxhc3RSZXN1bHQoCiAKICAgICAgICAgSlNBcnJheSogcmVzdWx0ID0gbnVsbHB0cjsK
ICAgICAgICAgaWYgKG1fcmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5KGdsb2JhbE9iamVjdCwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4
cC5nZXQoKSwgbV9yZXN1bHQuc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlUmVn
RXhwTWF0Y2hlcyhnbG9iYWxPYmplY3QsIG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAu
Z2V0KCksIG1fcmVzdWx0LnN0YXJ0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0
ID0gY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzQXJyYXkoZ2xvYmFsT2JqZWN0LCBtX2xhc3RJbnB1
dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0
ZUVtcHR5UmVnRXhwTWF0Y2hlcyhnbG9iYWxPYmplY3QsIG1fbGFzdElucHV0LmdldCgpLCBtX2xh
c3RSZWdFeHAuZ2V0KCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKIAogICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0V2l0aG91dFdyaXRlQmFycmllcihy
ZXN1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
TWF0Y2hlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE1hdGNoZXM6OnNfaW5mbyA9IHsgIlJlZ0V4cE1h
dGNoZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFJlZ0V4cE1hdGNoZXMpIH07CisKK1JlZ0V4cE1hdGNoZXM6On5SZWdFeHBNYXRjaGVzKCkK
K3sKKyAgICBtX3JlZ0V4cC5jbGVhcigpOworfQorCit2b2lkIFJlZ0V4cE1hdGNoZXM6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIFJlZ0V4cE1hdGNoZXMqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxSZWdFeHBNYXRjaGVzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+UmVnRXhwTWF0
Y2hlczo6flJlZ0V4cE1hdGNoZXMoKTsKK30KKwordm9pZCBSZWdFeHBNYXRjaGVzOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgUmVnRXhw
TWF0Y2hlcyogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9yZWdFeHApOworfQorCit2b2lkIFJlZ0V4cE1hdGNoZXM6Om1hdGVyaWFs
aXplSW5kaWNlc1Byb3BlcnR5SWZOZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIGlmIChtX2luZGljZXNNYXRlcmlhbGl6ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKKyAgICBKU1ZhbHVl
IGlucHV0VmFsdWUgPSBnZXREaXJlY3QoUmVnRXhwTWF0Y2hlczo6SW5wdXRQcm9wZXJ0eU9mZnNl
dCk7CisgICAgQVNTRVJUKGlucHV0VmFsdWUuaXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIGlucHV0
U3RyaW5nID0gaW5wdXRWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpLT52YWx1ZShnbG9iYWxP
YmplY3QpOworCisgICAgaW50IHBvc2l0aW9uID0gbV9yZWdFeHAtPm1hdGNoSW5saW5lKGdsb2Jh
bE9iamVjdCwgdm0sIGlucHV0U3RyaW5nLCBtX3N0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0
cyk7CisgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9zaXRpb24gIT0gLTEpOworCisgICAg
bWF0ZXJpYWxpemVJbmRpY2VzUHJvcGVydHkodm0sIGdsb2JhbE9iamVjdCwgbV9yZWdFeHAuZ2V0
KCksIHN1YnBhdHRlcm5SZXN1bHRzLmRhdGEoKSk7CisKKyAgICBtX3JlZ0V4cC5jbGVhcigpOwor
fQorCitSZWdFeHBNYXRjaGVzKiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgUmVnRXhwTWF0Y2hlcyogbWF0Y2hl
czsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJyYXkgYWxsb2NhdGlvbiBl
cnJvcnMgZ3JhY2VmdWxseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MTQ0CisKKyAgICBHQ0RlZmVycmFsQ29udGV4dCBkZWZlcnJhbENvbnRleHQo
dm0uaGVhcCk7CisgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7CisKKyAg
ICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7CisgICAg
ICAgIG1hdGNoZXMgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZFJlZ0V4cE1hdGNo
ZXMoc2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAgICAgICAv
LyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3Ig
aGVyZSwgYnV0CisgICAgICAgIC8vIHdoZW4gbWFraW5nIHRoaXMgY2hhbmdlIHdlIHNob3VsZCBj
aGVjayB0aGF0IGFsbCBjbGllbnRzIG9mIHRoaXMKKyAgICAgICAgLy8gZnVuY3Rpb24gd2lsbCBj
b3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gZnJvbSBoZXJlLgorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGNoZXMpOworCisgICAgICAgIG1hdGNoZXMtPmluaXRp
YWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAwLCBqc0VtcHR5U3RyaW5nKHZtKSk7CisK
KyAgICAgICAgaWYgKHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0
ZXJucygpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBh
dHRlcm5zOyArK2kpCisgICAgICAgICAgICAgICAgbWF0Y2hlcy0+aW5pdGlhbGl6ZUluZGV4V2l0
aG91dEJhcnJpZXIoc2NvcGUsIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbWF0Y2hlcyA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRj
aGVzKHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobWF0Y2hlcyk7CisKKyAgICAgICAgbWF0Y2hlcy0+aW5pdGlhbGl6ZUlu
ZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzRW1wdHlTdHJpbmcodm0pLCBBcnJheVdpdGhD
b250aWd1b3VzKTsKKworICAgICAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdF
eHAtPm51bVN1YnBhdHRlcm5zKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkKKyAgICAgICAgICAgICAgICBtYXRjaGVzLT5pbml0
aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgaSwganNVbmRlZmluZWQoKSwgQXJyYXlX
aXRoQ29udGlndW91cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtYXRjaGVzLT5wdXREaXJl
Y3RXaXRob3V0QmFycmllcihSZWdFeHBNYXRjaGVzOjpJbmRleFByb3BlcnR5T2Zmc2V0LCBqc051
bWJlcigtMSkpOworICAgIG1hdGNoZXMtPnB1dERpcmVjdFdpdGhvdXRCYXJyaWVyKFJlZ0V4cE1h
dGNoZXM6OklucHV0UHJvcGVydHlPZmZzZXQsIGlucHV0KTsKKyAgICBtYXRjaGVzLT5wdXREaXJl
Y3RVbmRlZmluZWQoUmVnRXhwTWF0Y2hlczo6R3JvdXBzUHJvcGVydHlPZmZzZXQpOworICAgIHJl
dHVybiBtYXRjaGVzOworfQorCitzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVJbmRpY2VzU3RydWN0
dXJlSW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlw
ZSBpbmRleGluZ1R5cGUpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5ncm91cHMsIDAsIG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA9PSBSZWdFeHBNYXRj
aGVzOjpJbmRpY2VzR3JvdXBzUHJvcGVydHlPZmZzZXQpOworICAgIHJldHVybiBzdHJ1Y3R1cmU7
Cit9CisKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc1N0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIFJlZ0V4cE1hdGNoZXM6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhDb250aWd1b3VzKTsK
K30KKworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzU2xvd1B1dFN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIFJlZ0V4cE1h
dGNoZXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlKTsKK30KKworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNl
c1N0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGNyZWF0ZUluZGljZXNTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5
V2l0aENvbnRpZ3VvdXMpOworfQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRp
Y2VzU2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZUluZGljZXNTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmpl
Y3QsIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
TWF0Y2hlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzY1IEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkJ1dHRlcmZseUlubGluZXMuaCIKKyNpbmNsdWRlICJHQ0RlZmVycmFsQ29udGV4dElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJSZWdFeHBJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdFeHBNYXRjaGVzIDogcHVibGljIEpTQXJyYXkgewor
ICAgIGZyaWVuZCBSZWdFeHBNYXRjaGVzKiBjcmVhdGVSZWdFeHBNYXRjaGVzKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1N0cmluZyosIGNvbnN0IFN0cmluZyYsIFJlZ0V4cCosIHVuc2lnbmVkLCBN
YXRjaFJlc3VsdCYpOworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQXJyYXk7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9m
R2V0UHJvcGVydHlOYW1lczsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBjb25z
dCBQcm9wZXJ0eU9mZnNldCBJbmRleFByb3BlcnR5T2Zmc2V0ID0gMTAwOworICAgIHN0YXRpYyBj
b25zdCBQcm9wZXJ0eU9mZnNldCBJbnB1dFByb3BlcnR5T2Zmc2V0ID0gMTAxOworICAgIHN0YXRp
YyBjb25zdCBQcm9wZXJ0eU9mZnNldCBHcm91cHNQcm9wZXJ0eU9mZnNldCA9IDEwMjsKKyAgICBz
dGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgSW5kaWNlc0dyb3Vwc1Byb3BlcnR5T2Zmc2V0ID0g
MTAwOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksIGlubGluZUNhcGFjaXR5ID09IDBV
KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihSZWdFeHBNYXRjaGVzKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVy
biB2bS5yZWdFeHBNYXRjaGVzU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVn
RXhwTWF0Y2hlcyogY3JlYXRlV2l0aEJ1dHRlcmZseShWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSkKKyAgICB7CisgICAgICAgIFJlZ0V4cE1hdGNoZXMqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlcz4odm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0
KSkgUmVnRXhwTWF0Y2hlcyh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAg
fQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICAgICAgUmVnRXhwTWF0Y2hlcyogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdF
eHBNYXRjaGVzKj4ob2JqZWN0KTsKKworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5kaWNl
c01hdGVyaWFsaXplZAorICAgICAgICAgICAgJiYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5pbmRpY2VzIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pbnB1
dCkpCisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVJbmRpY2VzUHJvcGVy
dHlJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCksIFR5
cGVJbmZvKEFycmF5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIGluZGV4aW5nVHlwZSk7
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlO
YW1lcy0+aW5kZXgsIDAsIG9mZnNldCk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhw
TWF0Y2hlczo6SW5kZXhQcm9wZXJ0eU9mZnNldCk7CisgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFt
ZXMtPmlucHV0LCAwLCBvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1h
dGNoZXM6OklucHV0UHJvcGVydHlPZmZzZXQpOworICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVz
LT5ncm91cHMsIDAsIG9mZnNldCk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0
Y2hlczo6R3JvdXBzUHJvcGVydHlPZmZzZXQpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlOwor
ICAgIH0KKworICAgIHZvaWQgc2V0UmVzdWx0c0RhdGEoVk0mIHZtLCBSZWdFeHAqIHJlZ0V4cCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQpCisgICAgeworICAgICAgICBtX3JlZ0V4cC5zZXQodm0sIHRo
aXMsIHJlZ0V4cCk7CisgICAgICAgIG1fc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKKyAgICB9
CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnRXhwKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwTWF0Y2hlcywgbV9yZWdFeHApOworICAgIH0K
KworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdGFydE9mZnNldCgpCisgICAgeworICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cE1hdGNoZXMsIG1fc3RhcnRPZmZzZXQp
OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRpY2VzTWF0ZXJpYWxp
emVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwTWF0Y2hl
cywgbV9pbmRpY2VzTWF0ZXJpYWxpemVkKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBSZWdFeHBNYXRjaGVzKFZNJiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5Kik7CisKKyAgICB+
UmVnRXhwTWF0Y2hlcygpOworCitwcml2YXRlOgorICAgIHZvaWQgbWF0ZXJpYWxpemVJbmRpY2Vz
UHJvcGVydHlJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICB2b2lkIG1hdGVy
aWFsaXplSW5kaWNlc1Byb3BlcnR5KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnRXhwKiByZWdFeHAsIGludCogcGF0dGVyblJlc3VsdHMpCisgICAgeworICAgICAgICBB
U1NFUlQocmVnRXhwKTsKKworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3Bl
KHZtKTsKKworICAgICAgICBhdXRvIGNyZWF0ZUluZGV4QXJyYXkgPSBbJl0gKGludCBzdGFydCwg
aW50IGVuZCkgeworICAgICAgICAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMik7CisgICAgICAgICAgICByZXN1bHQt
PmluaXRpYWxpemVJbmRleChzY29wZSwgMCwganNOdW1iZXIoc3RhcnQpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCAxLCBqc051bWJlcihlbmQpKTsKKworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICB1bnNpZ25lZCBu
dW1QYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDE7CisgICAgICAgIGJvb2wg
aGFzTmFtZWRDYXB0dXJlcyA9IHJlZ0V4cC0+aGFzTmFtZWRDYXB0dXJlcygpOworCisgICAgICAg
IEpTQXJyYXkqIGluZGljZXNBcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCksIG51bVBhdHRlcm5zKTsK
KworICAgICAgICBKU09iamVjdCogaW5kaWNlc0dyb3VwcyA9IGhhc05hbWVkQ2FwdHVyZXMgPyBj
b25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlKCkpIDogbnVsbHB0cjsKKyAgICAgICAgaW5kaWNlc0FycmF5LT5wdXREaXJlY3Qo
dm0sIFJlZ0V4cE1hdGNoZXM6OkluZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNldCwgaGFzTmFtZWRD
YXB0dXJlcyA/IGluZGljZXNHcm91cHMgOiBqc1VuZGVmaW5lZCgpKTsKKworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAgaW50
IHN0YXJ0ID0gcGF0dGVyblJlc3VsdHNbMiAqIGldOworICAgICAgICAgICAgaWYgKHN0YXJ0ID49
IDApCisgICAgICAgICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0aWFsaXplSW5kZXgoc2NvcGUs
IGksIGNyZWF0ZUluZGV4QXJyYXkoc3RhcnQsIHBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0pKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmRpY2VzQXJyYXktPmluaXRpYWxp
emVJbmRleChzY29wZSwgaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaGFzTmFtZWRDYXB0dXJlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG51bVBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZ3JvdXBOYW1l
ID0gcmVnRXhwLT5nZXRDYXB0dXJlR3JvdXBOYW1lKGkpOworICAgICAgICAgICAgICAgIGlmICgh
Z3JvdXBOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlc0dyb3Vwcy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBncm91cE5hbWUpLCBpbmRp
Y2VzQXJyYXktPmdldEluZGV4UXVpY2tseShpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmluZGljZXMsIGluZGlj
ZXNBcnJheSk7CisKKyAgICAgICAgbV9pbmRpY2VzTWF0ZXJpYWxpemVkID0gdHJ1ZTsKKworICAg
ICAgICByZWdFeHAtPnNldE1hdGVyaWFsaXplSW5kaWNpZXMoKTsKKyAgICB9CisKKyAgICBXcml0
ZUJhcnJpZXI8UmVnRXhwPiBtX3JlZ0V4cDsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0Owor
ICAgIGJvb2wgbV9pbmRpY2VzTWF0ZXJpYWxpemVkOworfTsKKworaW5saW5lIFJlZ0V4cE1hdGNo
ZXM6OlJlZ0V4cE1hdGNoZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5
KiBidXR0ZXJmbHkpCisgICAgOiBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkKKyAg
ICAsIG1faW5kaWNlc01hdGVyaWFsaXplZChmYWxzZSkKK3sKK30KKworQUxXQVlTX0lOTElORSBS
ZWdFeHBNYXRjaGVzKiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlcyhPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlJiBzY29wZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIG51bVBhdHRlcm5zKQoreworICAg
IFZNJiB2bSA9IHNjb3BlLnZtKCk7CisgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gbnVtUGF0
dGVybnM7CisgICAgaWYgKHZlY3Rvckxlbmd0aCA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgYm9vbCBoYXNJbmRleGluZ0hl
YWRlciA9IHRydWU7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgaGFzSW5kZXhpbmdIZWFkZXIsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSksIGRlZmVycmFsQ29udGV4dCk7CisgICAgaWYgKFVOTElLRUxZKCFidXR0ZXJmbHkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGJ1dHRlcmZseS0+c2V0VmVjdG9yTGVu
Z3RoKHZlY3Rvckxlbmd0aCk7CisgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobnVtUGF0
dGVybnMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGF0dGVybnM7IGkgPCB2ZWN0b3JM
ZW5ndGg7ICsraSkKKyAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXRVbnNhZmUoaSku
Y2xlYXIoKTsKKworICAgIFJlZ0V4cE1hdGNoZXMqIHJlc3VsdCA9IFJlZ0V4cE1hdGNoZXM6OmNy
ZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworCisgICAgc2NvcGUubm90aWZ5QWxsb2NhdGVkKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQUxXQVlTX0lOTElORSBSZWdFeHBNYXRjaGVzKiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkUmVzdHJpY3RlZFJlZ0V4cE1hdGNoZXMoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYg
c2NvcGUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1bnNpZ25lZCBudW1QYXR0ZXJucykKK3sKKyAgICBWTSYgdm0gPSBzY29wZS52bSgp
OworICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IG51bVBhdHRlcm5zOworICAgIGlmICh2ZWN0
b3JMZW5ndGggPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHVuc2lnbmVkIG91dE9mTGluZVN0b3JhZ2UgPSBzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGluZGV4QmlhcyA9IDA7CisgICAgdmVjdG9yTGVuZ3RoID0gQXJy
YXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLCBudW1Q
YXR0ZXJucyk7CisgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm0sCisgICAgICAgIEJ1dHRlcmZseTo6
dG90YWxTaXplKGluZGV4Qmlhcywgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdl
OjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLAorICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgaWYgKFVOTElLRUxZKCF0ZW1wKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpmcm9t
QmFzZSh0ZW1wLCBpbmRleEJpYXMsIG91dE9mTGluZVN0b3JhZ2UpOworICAgICpidXR0ZXJmbHkt
PmluZGV4aW5nSGVhZGVyKCkgPSBpbmRleGluZ0hlYWRlckZvckFycmF5U3RvcmFnZShudW1QYXR0
ZXJucywgdmVjdG9yTGVuZ3RoKTsKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBidXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpOworICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzID0gaW5kZXhCaWFz
OworICAgIHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmNsZWFyKCk7CisgICAgc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvciA9IG51bVBhdHRlcm5zOworICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBh
dHRlcm5zOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpCisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9y
W2ldLmNsZWFyKCk7CisKKyAgICBSZWdFeHBNYXRjaGVzKiByZXN1bHQgPSBSZWdFeHBNYXRjaGVz
OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBkZWZlcnJhbENvbnRleHQsIHN0cnVjdHVyZSwgYnV0
dGVyZmx5KTsKKworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0FMV0FZU19JTkxJTkUgUmVnRXhwTWF0Y2hlcyogY3JlYXRlUmVnRXhw
TWF0Y2hlcygKKyAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3Ry
aW5nKiBpbnB1dCwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlLAorICAgIFJlZ0V4cCogcmVnRXhw
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBpZiBj
b25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQorICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdD
KCk7CisKKyAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CisgICAgaW50IHBv
c2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1dFZhbHVl
LCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIGlmIChwb3NpdGlvbiA9PSAt
MSkgeworICAgICAgICByZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAg
IHJlc3VsdC5lbmQgPSBzdWJwYXR0ZXJuUmVzdWx0c1sxXTsKKworICAgIFJlZ0V4cE1hdGNoZXMq
IG1hdGNoZXM7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgaGFuZGxlIGFycmF5IGFsbG9j
YXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTE0NAorCisgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBy
ZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7CisgICAgYm9vbCBoYXNOYW1lZENhcHR1cmVzID0gcmVn
RXhwLT5oYXNOYW1lZENhcHR1cmVzKCk7CisgICAgSlNPYmplY3QqIGdyb3VwcyA9IGhhc05hbWVk
Q2FwdHVyZXMgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJv
dG90eXBlT2JqZWN0U3RydWN0dXJlKCkpIDogbnVsbHB0cjsKKyAgICBTdHJ1Y3R1cmUqIG1hdGNo
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsK
KworICAgIGF1dG8gc2V0UHJvcGVydGllcyA9IFsmXSAoKSB7CisgICAgICAgIG1hdGNoZXMtPnB1
dERpcmVjdFdpdGhvdXRCYXJyaWVyKFJlZ0V4cE1hdGNoZXM6OkluZGV4UHJvcGVydHlPZmZzZXQs
IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOworICAgICAgICBtYXRjaGVzLT5wdXREaXJlY3RXaXRo
b3V0QmFycmllcihSZWdFeHBNYXRjaGVzOjpJbnB1dFByb3BlcnR5T2Zmc2V0LCBpbnB1dCk7Cisg
ICAgICAgIG1hdGNoZXMtPnB1dERpcmVjdFdpdGhvdXRCYXJyaWVyKFJlZ0V4cE1hdGNoZXM6Okdy
b3Vwc1Byb3BlcnR5T2Zmc2V0LCBoYXNOYW1lZENhcHR1cmVzID8gZ3JvdXBzIDoganNVbmRlZmlu
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUKCFtYXRjaGVzLT5idXR0ZXJmbHkoKS0+aW5kZXhpbmdI
ZWFkZXIoKS0+cHJlQ2FwYWNpdHkobWF0Y2hTdHJ1Y3R1cmUpKTsKKyAgICAgICAgYXV0byBjYXBh
Y2l0eSA9IG1hdGNoU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICBhdXRv
IHNpemUgPSBtYXRjaFN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOworICAgICAgICBnY1NhZmVa
ZXJvTWVtb3J5KHN0YXRpY19jYXN0PEpTVmFsdWUqPihtYXRjaGVzLT5idXR0ZXJmbHkoKS0+YmFz
ZSgwLCBjYXBhY2l0eSkpLCAoY2FwYWNpdHkgLSBzaXplKSAqIHNpemVvZihKU1ZhbHVlKSk7Cisg
ICAgfTsKKworICAgIGlmIChVTkxJS0VMWShnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUo
KSkpIHsKKyAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXAp
OworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKKworICAgICAg
ICBtYXRjaGVzID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWRSZWdFeHBNYXRjaGVz
KHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMg
KyAxKTsKKworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91
dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0CisgICAgICAgIC8vIHdoZW4gbWFraW5nIHRoaXMg
Y2hhbmdlIHdlIHNob3VsZCBjaGVjayB0aGF0IGFsbCBjbGllbnRzIG9mIHRoaXMKKyAgICAgICAg
Ly8gZnVuY3Rpb24gd2lsbCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJv
d24gZnJvbSBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGNoZXMpOworCisgICAg
ICAgIHNldFByb3BlcnRpZXMoKTsKKworICAgICAgICBtYXRjaGVzLT5pbml0aWFsaXplSW5kZXhX
aXRob3V0QmFycmllcihzY29wZSwgMCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAmZGVmZXJy
YWxDb250ZXh0LCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0
KSk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBh
dHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpXTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAgICBpZiAoc3Rh
cnQgPj0gMCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2
bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICog
aSArIDFdIC0gc3RhcnQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVl
ID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIG1hdGNoZXMtPmluaXRpYWxpemVJbmRleFdp
dGhvdXRCYXJyaWVyKHNjb3BlLCBpLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBHQ0RlZmVycmFsQ29udGV4dCBkZWZlcnJhbENvbnRleHQodm0uaGVhcCk7CisgICAg
ICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworICAgICAgICBtYXRjaGVz
ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXMoc2NvcGUsICZkZWZlcnJhbENv
bnRleHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJwYXR0ZXJucyArIDEpOworCisgICAgICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0IG9mIG1lbW9yeSBlcnJvciBo
ZXJlLCBidXQKKyAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNo
ZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcworICAgICAgICAvLyBmdW5jdGlvbiB3aWxsIGNv
cnJlY3RseSBoYW5kbGUgYW4gZXhjZXB0aW9uIGJlaW5nIHRocm93biBmcm9tIGhlcmUuCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3ODYKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobWF0Y2hlcyk7CisKKyAgICAgICAgc2V0UHJvcGVydGllcygp
OworCisgICAgICAgIG1hdGNoZXMtPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3Bl
LCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBy
ZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1
b3VzKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5z
OyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBp
XTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgICAgICBpZiAoc3RhcnQgPj0g
MCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRl
ZmVycmFsQ29udGV4dCwgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDEg
XSAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CisgICAgICAgICAgICBtYXRjaGVzLT5pbml0aWFsaXplSW5kZXhXaXRob3V0
QmFycmllcihzY29wZSwgaSwgdmFsdWUsIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gTm93IHRoZSBvYmplY3QgaXMgc2FmZSB0byBzY2FuIGJ5IEdDLgor
CisgICAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZ3JvdXBzIG9iamVjdCBsYXRlIGFzIGl0IGNvdWxk
IGFsbG9jYXRlLCB3aGljaCB3aXRoIHRoZSBjdXJyZW50IEFQSSBjb3VsZCBjYXVzZQorICAgIC8v
IGFsbG9jYXRpb25zLgorICAgIGlmIChoYXNOYW1lZENhcHR1cmVzKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAg
U3RyaW5nIGdyb3VwTmFtZSA9IHJlZ0V4cC0+Z2V0Q2FwdHVyZUdyb3VwTmFtZShpKTsKKyAgICAg
ICAgICAgIGlmICghZ3JvdXBOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBncm91cHMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgZ3JvdXBOYW1lKSwgbWF0
Y2hlcy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChy
ZWdFeHAtPm1hdGVyaWFsaXplSW5kaWNpZXMoKSkKKyAgICAgICAgbWF0Y2hlcy0+bWF0ZXJpYWxp
emVJbmRpY2VzUHJvcGVydHkodm0sIGdsb2JhbE9iamVjdCwgcmVnRXhwLCBzdWJwYXR0ZXJuUmVz
dWx0cy5kYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgbWF0Y2hlcy0+c2V0UmVzdWx0c0RhdGEo
dm0sIHJlZ0V4cCwgc3RhcnRPZmZzZXQpOworCisgICAgcmV0dXJuIG1hdGNoZXM7Cit9CisKK2lu
bGluZSBSZWdFeHBNYXRjaGVzKiBjcmVhdGVSZWdFeHBNYXRjaGVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcsIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBz
dGFydE9mZnNldCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIE1hdGNoUmVzdWx0IGln
bm9yZWRSZXN1bHQ7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZVJlZ0V4cE1hdGNoZXModm0sIGdsb2JhbE9iamVjdCwg
c3RyaW5nLCBpbnB1dCwgcmVnRXhwLCBzdGFydE9mZnNldCwgaWdub3JlZFJlc3VsdCkpOworfQor
CitSZWdFeHBNYXRjaGVzKiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXMoSlNHbG9iYWxPYmplY3Qq
LCBKU1N0cmluZyosIFJlZ0V4cCopOworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0
Y2hlc0luZGljZXNTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOworU3RydWN0dXJlKiBj
cmVhdGVSZWdFeHBNYXRjaGVzU2xvd1B1dFN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzU2xvd1B1dFN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAko
cmV2aXNpb24gMjY5NzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVnRXhw
R2xvYmFsRGF0YUlubGluZXMuaCIKLSNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKKyNp
bmNsdWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUgSlNWYWx1ZSBSZWdFeHBPYmpl
Y3Q6OmV4ZWNJbmxpbmUoCiAgICAgCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwogICAgIEpTQXJy
YXkqIGFycmF5ID0KLSAgICAgICAgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KHZtLCBnbG9iYWxP
YmplY3QsIHN0cmluZywgaW5wdXQsIHJlZ0V4cCwgbGFzdEluZGV4LCByZXN1bHQpOworICAgICAg
ICBjcmVhdGVSZWdFeHBNYXRjaGVzKHZtLCBnbG9iYWxPYmplY3QsIHN0cmluZywgaW5wdXQsIHJl
Z0V4cCwgbGFzdEluZGV4LCByZXN1bHQpOwogICAgIGlmICghYXJyYXkpIHsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjY5NzA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcsNiArMTQ3LDcgQEAKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJh
bmRvbWl6aW5nRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2luY2x1
ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRl
ICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC0x
NTAwLDYgKzE1MDEsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rp
b25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZlU3Rk
RnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFBy
b3h5T2JqZWN0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5
UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKSAvLyBIYXNo
OjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhyZWdF
eHBNYXRjaGVzU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cE1hdGNoZXMpCiBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NvcGVkQXJndW1lbnRzVGFi
bGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU2NvcGVkQXJndW1l
bnRzVGFibGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNjcmlwdEZldGNoZXJTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNTY3JpcHRGZXRjaGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyNjk3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsNiArNTIyLDcgQEAgcHVibGljOgogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5T2JqZWN0U3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94eVJldm9rZVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocmVnRXhwTWF0Y2hlc1NwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NvcGVkQXJndW1lbnRz
VGFibGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlw
dEZldGNoUGFyYW1ldGVyc1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoc2NyaXB0RmV0Y2hlclNwYWNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckZsYWdzLmgJKHJldmlzaW9uIDI2OTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4IEBAIGVudW0gY2xh
c3MgRmxhZ3MgOiB1aW50OF90IHsKICAgICBTdGlja3kgPSAxIDw8IDMsCiAgICAgVW5pY29kZSA9
IDEgPDwgNCwKICAgICBEb3RBbGwgPSAxIDw8IDUsCi0gICAgRGVsZXRlZFZhbHVlID0gMSA8PCA2
CisgICAgTWF0ZXJpYWxpemVJbmRpY2VzID0gMSA8PCA2LAorICAgIERlbGV0ZWRWYWx1ZSA9IDEg
PDwgNwogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8T3B0aW9uU2V0PEZsYWdzPj4g
cGFyc2VGbGFncyhTdHJpbmdWaWV3KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTcwOSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIw
LTExLTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBwcm9wb3NhbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0LgorCisgICAg
ICAgICoganMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzOgorCiAy
MDIwLTExLTExICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcsIGFkZCBNb2phdmUgc3BlY2lmaWMgYmFzZWxpbmVz
LgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFtZWQtY2FwdHVy
ZS1ncm91cHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjk3MDkpCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC04LDMwICs4LDQ0IEBAIFBBU1MgZXhlY1Jlc3VsdDFbMF0gaXMgIjAxLzAyLzIwMDEiCiBQ
QVNTIGV4ZWNSZXN1bHQxLmdyb3Vwcy5tb250aCBpcyAiMDEiCiBQQVNTIGV4ZWNSZXN1bHQxLmdy
b3Vwcy5kYXkgaXMgIjAyIgogUEFTUyBleGVjUmVzdWx0MS5ncm91cHMueWVhciBpcyAiMjAwMSIK
LVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhlY1Jlc3VsdDEpLnNvcnQoKSBpcyBb
IjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0KK1BBU1Mg
ZXhlY1Jlc3VsdDEuaW5kaWNlcy5ncm91cHMubW9udGggaXMgWzAsMl0KK1BBU1MgZXhlY1Jlc3Vs
dDEuaW5kaWNlcy5ncm91cHMuZGF5IGlzIFszLDVdCitQQVNTIGV4ZWNSZXN1bHQxLmluZGljZXMu
Z3JvdXBzLnllYXIgaXMgWzYsMTBdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4
ZWNSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJp
bmRpY2VzIiwiaW5wdXQiLCJsZW5ndGgiXQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhleGVjUmVzdWx0MS5ncm91cHMpLnNvcnQoKSBpcyBbImRheSIsIm1vbnRoIiwieWVhciJdCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBz
KS5zb3J0KCkgaXMgWyJkYXkiLCJtb250aCIsInllYXIiXQogUEFTUyBtYXRjaFJlc3VsdDFbMF0g
aXMgIjAxLzAyLzIwMDEiCiBQQVNTIG1hdGNoUmVzdWx0MS5ncm91cHMubW9udGggaXMgIjAxIgog
UEFTUyBtYXRjaFJlc3VsdDEuZ3JvdXBzLmRheSBpcyAiMDIiCiBQQVNTIG1hdGNoUmVzdWx0MS5n
cm91cHMueWVhciBpcyAiMjAwMSIKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0
Y2hSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJp
bnB1dCIsImxlbmd0aCJdCitQQVNTIG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5tb250aCBp
cyBbMCwyXQorUEFTUyBtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMuZGF5IGlzIFszLDVdCitQ
QVNTIG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy55ZWFyIGlzIFs2LDEwXQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwi
MiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdCiBQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MS5ncm91cHMpLnNvcnQoKSBp
cyBbImRheSIsIm1vbnRoIiwieWVhciJdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcykuc29ydCgpIGlzIFsiZGF5IiwibW9udGgiLCJ5
ZWFyIl0KIFBBU1MgbWF0Y2hSZXN1bHQyYVswXSBpcyAiSm9obiBXLiBTbWl0aCIKIFBBU1MgbWF0
Y2hSZXN1bHQyYVsxXSBpcyAiSm9obiIKIFBBU1MgbWF0Y2hSZXN1bHQyYVsyXSBpcyAiVy4iCiBQ
QVNTIG1hdGNoUmVzdWx0MmFbM10gaXMgIlNtaXRoIgorUEFTUyBtYXRjaFJlc3VsdDJhLmluZGlj
ZXNbMV0gaXMgWzAsNF0KK1BBU1MgbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzJdIGlzIFs1LDddCitQ
QVNTIG1hdGNoUmVzdWx0MmEuaW5kaWNlc1szXSBpcyBbOCwxM10KIFBBU1MgbWF0Y2hSZXN1bHQy
YVsxXSBpcyBtYXRjaFJlc3VsdDJhLmdyb3Vwcy5maXJzdF9uYW1lCiBQQVNTIG1hdGNoUmVzdWx0
MmFbMl0gaXMgbWF0Y2hSZXN1bHQyYS5ncm91cHMubWlkZGxlX2luaXRpYWwKIFBBU1MgbWF0Y2hS
ZXN1bHQyYVszXSBpcyBtYXRjaFJlc3VsdDJhLmdyb3Vwcy5sYXN0X25hbWUKLVBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIi
LCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1dCIsImxlbmd0aCJdCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIs
Imdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIsImlucHV0IiwibGVuZ3RoIl0KIFBBU1MgbWF0Y2hS
ZXN1bHQyYlswXSBpcyAiU2FsbHkgQnJvd24iCiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMgIlNh
bGx5IgogUEFTUyBtYXRjaFJlc3VsdDJiWzJdIGlzIHVuZGVmaW5lZC4KIFBBU1MgbWF0Y2hSZXN1
bHQyYlszXSBpcyAiQnJvd24iCitQQVNTIG1hdGNoUmVzdWx0MmIuaW5kaWNlc1sxXSBpcyBbMCw1
XQorUEFTUyBtYXRjaFJlc3VsdDJiLmluZGljZXNbMl0gaXMgdW5kZWZpbmVkLgorUEFTUyBtYXRj
aFJlc3VsdDJiLmluZGljZXNbM10gaXMgWzYsMTFdCiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMg
bWF0Y2hSZXN1bHQyYi5ncm91cHMuZmlyc3RfbmFtZQogUEFTUyBtYXRjaFJlc3VsdDJiWzJdIGlz
IG1hdGNoUmVzdWx0MmIuZ3JvdXBzLm1pZGRsZV9pbml0aWFsCiBQQVNTIG1hdGNoUmVzdWx0MmJb
M10gaXMgbWF0Y2hSZXN1bHQyYi5ncm91cHMubGFzdF9uYW1lCi1QQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdy
b3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMi
LCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdCiBQQVNTIHJlMy50b1N0cmluZygp
IGlzICJcL14oPzxwYXJ0MT4uKik6KD88cGFydDI+LiopOlxcazxwYXJ0Mj46XFxrPHBhcnQxPiRc
LyIKIFBBU1MgcmUzLnRlc3QoImE6YjpiOmEiKSBpcyB0cnVlCiBQQVNTIHJlMy50ZXN0KCJhOmE6
YTphIikgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1u
YW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzCShyZXZpc2lvbiAyNjk3MDkp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3Jv
dXBzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxNiArMTIsMjQgQEAgc2hvdWxkQmUoJ2V4ZWNS
ZXN1bHQxWzBdJywgJyIwMS8wMi8yMDAxIgogc2hvdWxkQmUoJ2V4ZWNSZXN1bHQxLmdyb3Vwcy5t
b250aCcsICciMDEiJyk7CiBzaG91bGRCZSgnZXhlY1Jlc3VsdDEuZ3JvdXBzLmRheScsICciMDIi
Jyk7CiBzaG91bGRCZSgnZXhlY1Jlc3VsdDEuZ3JvdXBzLnllYXInLCAnIjIwMDEiJyk7Ci1zaG91
bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhlY1Jlc3VsdDEpLnNvcnQoKScsICdb
IjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3No
b3VsZEJlKCdleGVjUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5tb250aCcsICdbMCwyXScpOworc2hv
dWxkQmUoJ2V4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBzLmRheScsICdbMyw1XScpOworc2hvdWxk
QmUoJ2V4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBzLnllYXInLCAnWzYsMTBdJyk7CitzaG91bGRC
ZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhlY1Jlc3VsdDEpLnNvcnQoKScsICdbIjAi
LCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJd
Jyk7CiBzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhlY1Jlc3VsdDEuZ3Jv
dXBzKS5zb3J0KCknLCAnWyJkYXkiLCJtb250aCIsInllYXIiXScpOworc2hvdWxkQmUoJ09iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBzKS5zb3J0KCkn
LCAnWyJkYXkiLCJtb250aCIsInllYXIiXScpOwogCiB2YXIgbWF0Y2hSZXN1bHQxID0gc3JjMS5t
YXRjaChyZTEpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MVswXScsICciMDEvMDIvMjAwMSInKTsK
IHNob3VsZEJlKCdtYXRjaFJlc3VsdDEuZ3JvdXBzLm1vbnRoJywgJyIwMSInKTsKIHNob3VsZEJl
KCdtYXRjaFJlc3VsdDEuZ3JvdXBzLmRheScsICciMDIiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1
bHQxLmdyb3Vwcy55ZWFyJywgJyIyMDAxIicpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdyb3Vw
cyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MS5p
bmRpY2VzLmdyb3Vwcy5tb250aCcsICdbMCwyXScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MS5p
bmRpY2VzLmdyb3Vwcy5kYXknLCAnWzMsNV0nKTsKK3Nob3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5k
aWNlcy5ncm91cHMueWVhcicsICdbNiwxMF0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91
cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdJyk7CiBzaG91bGRCZSgnT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxLmdyb3Vwcykuc29ydCgpJywgJ1si
ZGF5IiwibW9udGgiLCJ5ZWFyIl0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMpLnNvcnQoKScsICdbImRheSIsIm1vbnRo
IiwieWVhciJdJyk7CiAKIHZhciByZTIgPSAvKD88Zmlyc3RfbmFtZT5cdyspXHMoPzooPzxtaWRk
bGVfaW5pdGlhbD5cd1wuKVxzKT8oPzxsYXN0X25hbWU+XHcrKS87CiB2YXIgbWF0Y2hSZXN1bHQy
YSA9ICJKb2huIFcuIFNtaXRoIi5tYXRjaChyZTIpOwpAQCAtMzAsMTAgKzM4LDEzIEBAIHNob3Vs
ZEJlKCdtYXRjaFJlc3VsdDJhWzBdJywgJyJKb2huIFcuIFMKIHNob3VsZEJlKCdtYXRjaFJlc3Vs
dDJhWzFdJywgJyJKb2huIicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMl0nLCAnIlcuIicp
Owogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbM10nLCAnIlNtaXRoIicpOworc2hvdWxkQmUoJ21h
dGNoUmVzdWx0MmEuaW5kaWNlc1sxXScsICdbMCw0XScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0
MmEuaW5kaWNlc1syXScsICdbNSw3XScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmEuaW5kaWNl
c1szXScsICdbOCwxM10nKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzFdJywgJ21hdGNoUmVz
dWx0MmEuZ3JvdXBzLmZpcnN0X25hbWUnKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzJdJywg
J21hdGNoUmVzdWx0MmEuZ3JvdXBzLm1pZGRsZV9pbml0aWFsJyk7CiBzaG91bGRCZSgnbWF0Y2hS
ZXN1bHQyYVszXScsICdtYXRjaFJlc3VsdDJhLmdyb3Vwcy5sYXN0X25hbWUnKTsKLXNob3VsZEJl
KCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAi
LCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3Nob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdb
IjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0
aCJdJyk7CiAKIC8vIFZlcmlmeSB0aGF0IG5hbWVkIGdyb3VwcyB0aGF0IGFyZW4ndCBtYXRjaGVk
IGFyZSB1bmRlZmluZWQuCiB2YXIgbWF0Y2hSZXN1bHQyYiA9ICJTYWxseSBCcm93biIubWF0Y2go
cmUyKTsKQEAgLTQyLDEwICs1MywxMyBAQCBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlswXScsICci
U2FsbHkgQnJvCiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlsxXScsICciU2FsbHkiJyk7CiBzaG91
bGRCZVVuZGVmaW5lZCgnbWF0Y2hSZXN1bHQyYlsyXScpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0
MmJbM10nLCAnIkJyb3duIicpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1sxXScs
ICdbMCw1XScpOworc2hvdWxkQmVVbmRlZmluZWQoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1syXScp
Oworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1szXScsICdbNiwxMV0nKTsKIHNob3Vs
ZEJlKCdtYXRjaFJlc3VsdDJiWzFdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLmZpcnN0X25hbWUn
KTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJiWzJdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLm1p
ZGRsZV9pbml0aWFsJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlszXScsICdtYXRjaFJlc3Vs
dDJiLmdyb3Vwcy5sYXN0X25hbWUnKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJp
bmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMi
LCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdJyk7CiAKIC8vIFZlcmlmeSB0aGF0
IG5hbWVkIGJhY2tyZWZlcmVuY2VzIHdvcmsuCiB2YXIgcmUzID0gL14oPzxwYXJ0MT4uKik6KD88
cGFydDI+LiopOlxrPHBhcnQyPjpcazxwYXJ0MT4kLzsK
</data>
<flag name="commit-queue"
          id="430608"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414055</attachid>
            <date>2020-11-13 09:41:53 -0800</date>
            <delta_ts>2021-01-25 10:15:30 -0800</delta_ts>
            <desc>Updated Patch addressing test failures</desc>
            <filename>217975-3.patch</filename>
            <type>text/plain</type>
            <size>79399</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjk3NzQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDIwLTExLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TmV3IHRlc3QgYWxvbmcgd2l0aCBlbmFibGluZyB0aGUgUmVnRXhwIE1hdGNoIEluZGljZXMgdGVz
dDI2MiB0ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9kZmctc3RyZW5ndGgtcmVkdWN0aW9uLWZv
ci1yZWdleHAtc2hvdWxkLWluZGljZXMtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoK
KwogMjAyMC0xMS0xMyAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwuY29tPgogCiAgICAg
ICAgIFdlYkFzc2VtYmx5OiB1cGRhdGUgd2FidC5qcwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZGZn
LXN0cmVuZ3RoLXJlZHVjdGlvbi1mb3ItcmVnZXhwLXNob3VsZC1pbmRpY2VzLXByb3BlcnR5Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RmZy1zdHJlbmd0aC1yZWR1Y3Rpb24tZm9y
LXJlZ2V4cC1zaG91bGQtaW5kaWNlcy1wcm9wZXJ0eS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kZmctc3RyZW5ndGgtcmVkdWN0aW9uLWZvci1yZWdleHAtc2hvdWxkLWluZGlj
ZXMtcHJvcGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citu
b0lubGluZShzaG91bGRCZSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCByID0gLyhh
KS87CisgICAgbGV0IG0gPSByLmV4ZWMoJ2EnKTsKKyAgICBzaG91bGRCZShtLmluZGljZXNbMF1b
MF0sIDApOworICAgIC8vIHNob3VsZEJlKG0uaW5kaWNlc1swXVsxXSwgMSk7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKworZm9yIChsZXQgaT0wOyBpPDEwMDAwMDsgaSsrKQorICAgIHRlc3QoKTsKSW5k
ZXg6IEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwJKHJldmlzaW9uIDI2OTc3NCkKKysrIEpTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQCBza2lwOgogICAgIC0g
Y2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKLSAgICAtIHJlZ2V4cC1tYXRjaC1pbmRp
Y2VzCiAgICAgLSB0b3AtbGV2ZWwtYXdhaXQKICAgICAtIEludGwuTGlzdEZvcm1hdAogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NyBAQAorMjAy
MC0xMS0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBb
SlNDXSBJbXBsZW1lbnQgUmVnRXhwIE1hdGNoIEluZGljZXMgcHJvcG9zYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50ZXMgdGhl
IHN0YWdlIDMgcHJvcG9zYWwgZm9yIFJlZ0V4cCBNYXRjaCBJbmRpY2VzIChodHRwczovL2dpdGh1
Yi5jb20vdGMzOS9wcm9wb3NhbC1yZWdleHAtbWF0Y2gtaW5kaWNlcykuCisgICAgICAgIEZvciBw
ZXJmb3JtYW5jZSByZWFzb25zLCB0aGUgImluZGljZXMiIHByb3BlcnR5IGFuZCBpdHMgY29udGVu
dHMgYXJlIGxhemlseSBtYXRlcmlhbGl6ZWQuCisgICAgICAgIFRocm91Z2ggdGVzdGluZywgaXQg
d2FzIG1vcmUgcGVyZm9ybWFudCB0byBzYXZlIHRoZSBSZWdFeHAgYW5kIHRoZSBzdGFydCBvZmZz
ZXQgYW5kIHJlLXJ1biB0aGUgbWF0Y2gKKyAgICAgICAgdG8gZ2V0IHRoZSBpbmRpY2VzIGludGVn
ZXIgdmFsdWVzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToK
KyAgICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24u
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAg
ICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6aXNBcnJh
eVNsb3dJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6aXNKU0FycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZmlyZVdhdGNo
cG9pbnRBbmRNYWtlQWxsQXJyYXlTdHJ1Y3R1cmVzU2xvd1B1dCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBNYXRjaGVzSW5k
aWNlc0FycmF5U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE1hdGNoZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6flJlZ0V4
cE1hdGNoZXMpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzOjpkZXN0cm95KToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlJl
Z0V4cE1hdGNoZXM6Om1hdGVyaWFsaXplSW5kaWNlc1Byb3BlcnR5SWZOZWVkZWQpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXMpOgorICAgICAgICAoSlNDOjpjcmVhdGVJ
bmRpY2VzU3RydWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzU2xvd1B1dFN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0luZGljZXNTbG93UHV0U3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXMuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OlJlZ0V4cE1hdGNoZXM6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwTWF0Y2hlczo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzOjpj
cmVhdGVXaXRoQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlczo6c2V0UmVzdWx0c0RhdGEpOgorICAg
ICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzOjpvZmZzZXRPZlJlZ0V4cCk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE1hdGNoZXM6Om9mZnNldE9mU3RhcnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpSZWdF
eHBNYXRjaGVzOjpvZmZzZXRPZkluZGljZXNNYXRlcmlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBNYXRjaGVzOjptYXRlcmlhbGl6ZUluZGljZXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE1hdGNoZXM6OlJlZ0V4cE1hdGNoZXMpOgorICAgICAgICAoSlNDOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlcyk6CisgICAgICAgIChKU0M6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWRSZXN0cmljdGVkUmVnRXhwTWF0Y2hlcyk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJl
Z0V4cE1hdGNoZXMpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB5YXJyL1lhcnJG
bGFncy5oOgorCiAyMDIwLTExLTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBlbnN1cmUgdGhhdCBgSlNPTjo6QXJyYXlPZjxUPmAg
ZG9lc24ndCBhbGxvdyBgYWRkSXRlbWAgdG8gYmUgY2FsbGVkIHdpdGggYSB0eXBlIG90aGVyIHRo
YW4gYFRgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjk3NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk2Miw3ICs5NjIsNyBAQCBydW50aW1lL1JlZ0V4cENhY2hlLmNwcAogcnVudGltZS9SZWdFeHBD
YWNoZWRSZXN1bHQuY3BwCiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9S
ZWdFeHBHbG9iYWxEYXRhLmNwcAotcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCitydW50
aW1lL1JlZ0V4cE1hdGNoZXMuY3BwCiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKIHJ1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAogcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjk3NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE1Niw2ICsxMTU2LDcgQEAKIAkJNjU3Q0Y0
NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxs
ZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8q
IENvbmZpZ0ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4RDNBNTUxOTYzODI2
ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk2NTk4QjI5RDI1MkU5MTg1MDBEQjQ1MzEgLyogUmVnRXhw
TWF0Y2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU5OEIyOUMyNTJFOTE4NTAwREI0NTMxIC8qIFJlZ0V4cE1hdGNoZXMuaCAqLzsgfTsKIAkJNjU5
Q0RBNUIxRjY3NTNGMjAwRDNFNTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5Q0RBNUExRjY3NTA5ODAw
RDNFNTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QjgzOTJFMUJBQ0FEMzYwMDQ0RTgyNCAvKiBD
YWNoZWRSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVCODM5MkMxQkFDQTkyQTAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggKi87IH07
CiAJCTZBMzhDRkFBMUUzMkI1QUIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBMzhDRkE4MUUzMkI1OEIw
MDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLzsgfTsKQEAgLTM5NTcsNiArMzk1OCw4IEBA
CiAJCTY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVjb3JkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTUVudHJ5UmVjb3JkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmll
ciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyog
REZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4N0YyRjE2
ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbnVzZWRQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1OThCMjlDMjUyRTkxODUwMERCNDUzMSAvKiBSZWdFeHBNYXRjaGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE1hdGNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU5OEIyOUUyNTJFOTFBQTAwREI0NTMxIC8qIFJlZ0V4cE1hdGNoZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwTWF0Y2hlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUNEQTU5MUY2NzUwOTgwMEQzRTUzRiAv
KiBZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcDsgcGF0aCA9IHlhcnIvWWFyclVuaWNv
ZGVQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5Q0RBNUEx
RjY3NTA5ODAwRDNFNTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyVW5pY29kZVByb3BlcnRpZXMuaDsgcGF0aCA9IHlhcnIv
WWFyclVuaWNvZGVQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QTk0NjEzMUM4RTlGMjAwMEE3MjA5QSAvKiBnZW5lcmF0ZVlhcnJDYW5vbmljYWxpemVVbmljb2Rl
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJhdGVZYXJyQ2Fub25p
Y2FsaXplVW5pY29kZTsgcGF0aCA9IHlhcnIvZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29k
ZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMjMsNyArNDIyNiw2IEBACiAJCTg2
RjNFRUJBMTY4Q0NGNzUwMDc3QjkyQSAvKiBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iakNDYWxsYmFja0Z1bmN0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMg
LyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZ0V4cENhY2hlZFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2Rjc1RUZDMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGVkUmVzdWx0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2Rjc1RUZEMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdF
eHBNYXRjaGVzQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVnRXhwTWF0Y2hlc0FycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZG
QTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JvdW5kRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQm91bmRGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1
QjcgLyogU2NyaXB0RmV0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRGZXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjc0LDcgKzQy
NzYsNiBAQAogCQk5MzdCNjNDQzA5RTc2NkQyMDBBNjcxREQgLyogRGVyaXZlZFNvdXJjZXMubWFr
ZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS5tYWtlOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMubWFrZTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdXNlc1RhYnMgPSAxOyB9OwogCQk5Mzg3NzJFNTAzOEJG
RTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwogCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBCMDggLyogSlNBcnJheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FycmF5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTNDRURERkIwRUE5MUVFNjAwMjU4RUJFIC8qIFJlZ0V4
cE1hdGNoZXNBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBN
YXRjaGVzQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMEIzQTkwOUJC
NERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YwQjNB
QTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxOTgxQTA4
MjQ1QUFFMDAxRTlBQkMgLyogS2V5d29yZHMudGFibGUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBLZXl3b3Jkcy50YWJsZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OwpAQCAtNzY5Miw4ICs3NjkzLDggQEAKIAkJCQlFMzI1OTU2MzIxRkRB
MkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLywKIAkJCQkwRjdDMzlG
QTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovLAogCQkJCUExNzEyQjQwMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLywKLQkJCQk4NkY3NUVGRDE1MUMwNjJGMDA3
QzlCQTMgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAqLywKLQkJCQk5M0NFRERGQjBFQTkxRUU2
MDAyNThFQkUgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmggKi8sCisJCQkJNjU5OEIyOUUyNTJFOTFB
QTAwREI0NTMxIC8qIFJlZ0V4cE1hdGNoZXMuY3BwICovLAorCQkJCTY1OThCMjlDMjUyRTkxODUw
MERCNDUzMSAvKiBSZWdFeHBNYXRjaGVzLmggKi8sCiAJCQkJRjY5MkE4N0IwMjU1NTk3RDAxRkY2
MEY3IC8qIFJlZ0V4cE9iamVjdC5jcHAgKi8sCiAJCQkJRjY5MkE4N0MwMjU1NTk3RDAxRkY2MEY3
IC8qIFJlZ0V4cE9iamVjdC5oICovLAogCQkJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggKi8sCkBAIC05MTAzLDYgKzkxMDQsNyBAQAogCQkJCTBGNkIx
Q0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2NTk4QjI5RDI1MkU5MTg1MDBEQjQ1MzEgLyogUmVnRXhwTWF0
Y2hlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzIyIC8qIEFS
TTY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2OTc3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlICJSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIgot
I2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMu
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5o
IgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpAQCAtMTE2OCwxMyArMTE2OCwxMyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVnRXhwCiAKICAgICB1bnNpZ25lZCBs
YXN0SW5kZXggPSAwOwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKLSAgICBKU0FycmF5KiBhcnJh
eSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIGlu
cHV0LCByZWdFeHAsIGxhc3RJbmRleCwgcmVzdWx0KTsKKyAgICBSZWdFeHBNYXRjaGVzKiBtYXRj
aGVzID0gY3JlYXRlUmVnRXhwTWF0Y2hlcyh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIGlucHV0
LCByZWdFeHAsIGxhc3RJbmRleCwgcmVzdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwotICAgIGlmICghYXJyYXkpCisgICAgaWYgKCFtYXRjaGVzKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIGdsb2JhbE9iamVjdC0+cmVn
RXhwR2xvYmFsRGF0YSgpLnJlY29yZE1hdGNoKHZtLCBnbG9iYWxPYmplY3QsIHJlZ0V4cCwgc3Ry
aW5nLCByZXN1bHQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyYXkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUobWF0Y2hlcyk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RTdHJpbmcsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpT
U3RyaW5nKiBhcmd1bWVudCkpCkBAIC0yOTI1LDYgKzI5MjUsOCBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3UmF3CiAKICAgICBpZiAoc3RydWN0dXJlLT50eXBlKCkgPT0g
SlNUeXBlOjpBcnJheVR5cGUpCiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KEpT
QXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxwdHIsIHN0cnVjdHVyZSwgYnV0dGVy
Zmx5KSk7CisgICAgaWYgKHN0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oUmVnRXhwTWF0Y2hlczo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwg
c3RydWN0dXJlLCBidXR0ZXJmbHkpKTsKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihK
U0ZpbmFsT2JqZWN0OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZs
eSkpOwogfQogCkBAIC0yOTQxLDYgKzI5NDMsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3T2JqCiAgICAgCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZSgpID09IEpTVHlw
ZTo6QXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZs
eSh2bSwgbnVsbHB0ciwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGlmIChzdHJ1Y3R1cmUg
PT0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkpCisgICAgICAgIHJldHVybiBSZWdFeHBNYXRjaGVzOjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZt
LCBudWxscHRyLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAgICAgcmV0dXJuIEpTRmluYWxPYmpl
Y3Q6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKIH0KIApA
QCAtMjk2Myw2ICsyOTY3LDggQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d09iagogICAgIAogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGUoKSA9PSBKU1R5cGU6OkFycmF5VHlw
ZSkKICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIG51bGxw
dHIsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBpZiAoc3RydWN0dXJlID09IHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpKQorICAgICAg
ICByZXR1cm4gUmVnRXhwTWF0Y2hlczo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwg
c3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVX
aXRoQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24u
Y3BwCShyZXZpc2lvbiAyNjk3NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxOCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBJbnRl
cm5hbEZpZWxkT2JqZWN0UExvYzoKICAgICAgICAgb3V0LnByaW50KCJJbnRlcm5hbEZpZWxkT2Jq
ZWN0UExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlZ0V4cE1hdGNoZXNPcmln
UmVnRXhwOgorICAgICAgICBvdXQucHJpbnQoIlJlZ0V4cE1hdGNoZXNPcmlnUmVnRXhwIik7Cisg
ICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVnRXhwTWF0Y2hlc1N0YXJ0T2Zmc2V0OgorICAg
ICAgICBvdXQucHJpbnQoIlJlZ0V4cE1hdGNoZXNTdGFydE9mZnNldCIpOworICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIFJlZ0V4cE1hdGNoZXNJbmRpY2VzTWF0ZXJpYWxpemVkOgorICAgICAg
ICBvdXQucHJpbnQoIlJlZ0V4cE1hdGNoZXNJbmRpY2VzTWF0ZXJpYWxpemVkIik7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmgJKHJldmlzaW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcs
OSBAQCBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBOZXdBcnJheUJ1ZmZlclBMb2Ms
CiAgICAgUmVnRXhwT2JqZWN0UmVnRXhwUExvYywKICAgICBSZWdFeHBPYmplY3RMYXN0SW5kZXhQ
TG9jLAorICAgIFJlZ0V4cE1hdGNoZXNPcmlnUmVnRXhwLAorICAgIFJlZ0V4cE1hdGNoZXNTdGFy
dE9mZnNldCwKKyAgICBSZWdFeHBNYXRjaGVzSW5kaWNlc01hdGVyaWFsaXplZCwKIH07CiAKIGNs
YXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNjk3NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1NldEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVj
dC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxl
ckxvZy5oIgpAQCAtMTMzLDYgKzEzNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxv
Y2F0ZVJhd09iamUKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yOwogICAgIGlmIChzdHJ1Y3R1cmUt
PnR5cGUoKSA9PSBKU1R5cGU6OkFycmF5VHlwZSkKICAgICAgICAgYWxsb2NhdG9yID0gYWxsb2Nh
dG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU0FycmF5Pih2bSwgSlNBcnJheTo6YWxsb2Nh
dGlvblNpemUoaW5saW5lQ2FwYWNpdHkpLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4
aXN0cyk7CisgICAgZWxzZSBpZiAoc3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZS0+Z2xvYmFs
T2JqZWN0KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpKQorICAgICAgICBhbGxvY2F0
b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PFJlZ0V4cE1hdGNoZXM+KHZt
LCBSZWdFeHBNYXRjaGVzOjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSksIEFsbG9jYXRv
ckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKICAgICBlbHNlCiAgICAgICAgIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0s
IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KSwgQWxsb2NhdG9y
Rm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgIGlmIChhbGxvY2F0b3IpIHsKQEAgLTEy
NDA3LDYgKzEyNDEwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6
ZU4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKworICAgICAg
ICBjYXNlIFJlZ0V4cE1hdGNoZXNTdGFydE9mZnNldDogeworICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKGVkZ2UtPmFz
SW50MzIoKSksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBSZWdFeHBNYXRjaGVzOjpvZmZzZXRPZlN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBSZWdFeHBNYXRjaGVzSW5kaWNlc01hdGVy
aWFsaXplZDogeworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKGVkZ2UtPmFzSW50MzIoKSksCisgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdFeHBNYXRjaGVzOjpvZmZzZXRP
ZkluZGljZXNNYXRlcmlhbGl6ZWQoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNPcmlnUmVnRXhwOiB7CisgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
VmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFJlZ0V4cE1hdGNoZXM6Om9mZnNl
dE9mUmVnRXhwKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgogI2lu
Y2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNsdWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSA8Y3N0ZGxpYj4KQEAgLTY1MSw3ICs2NTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogc3RydWN0dXJlU2V0ID0gbV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Q3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRv
IGFsbG9jYXRlLiBUaGlzIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkg
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2Yg
SlNTdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFzaWNhbGx5IGNyZWF0ZVJl
Z0V4cE1hdGNoZXMgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChzdHJpbmcuc3Vic3RyaW5nKHJl
c3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5z
KCk7ICsraSkgewpAQCAtNzA3LDYgKzcwOCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgZ3Jv
dXBzSW5kZXgpKTsKIAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwgcmVnRXhwRnJvemVuVmFsdWUsIFVudHlwZWRVc2UpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoUmVnRXhwTWF0
Y2hlc09yaWdSZWdFeHApKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIobGFzdEluZGV4KSwgS25vd25JbnQz
MlVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
cihSZWdFeHBNYXRjaGVzU3RhcnRPZmZzZXQpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIoMCksIEtub3du
SW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2Ny
aXB0b3IoUmVnRXhwTWF0Y2hlc0luZGljZXNNYXRlcmlhbGl6ZWQsIFJlZ0V4cE1hdGNoZXM6Om9m
ZnNldE9mSW5kaWNlc01hdGVyaWFsaXplZCgpKSk7CisKICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbWF0ZXJpYWxpemVTdHJpbmcgPSBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBO
b2RlKiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5pc051bGwoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjY5Nzc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdEb21pbmF0b3JzLmgiCiAjaW5j
bHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lz
UGhhc2UuaCIKKyNpbmNsdWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtMzI2LDExICsz
MjcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgICAgICBmb3Ig
KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVz
IHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXkgb3IgUmVnRXhwTWF0Y2hlcy4KICAgICAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6
OmluZm8oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6OmluZm8oKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gUmVnRXhwTWF0Y2hl
czo6aW5mbygpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0
IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAyNjk3NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKICNp
bmNsdWRlICJKU1dlYWtNYXAuaCIKKyNpbmNsdWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVk
ZSAiU3ltYm9sLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTExOSw2
ICsxMjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oSlNS
b3BlU3RyaW5nX2ZpYmVyMiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMigpKSBcCiAgICAg
bWFjcm8oSlNTY29wZV9uZXh0LCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkgXAogICAgIG1hY3Jv
KEpTU3ltYm9sVGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6Om9m
ZnNldE9mU3ltYm9sVGFibGUoKSkgXAorICAgIG1hY3JvKFJlZ0V4cE1hdGNoZXNfcmVnRXhwLCBS
ZWdFeHBNYXRjaGVzOjpvZmZzZXRPZlJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwTWF0Y2hl
c19zdGFydE9mZnNldCwgUmVnRXhwTWF0Y2hlczo6b2Zmc2V0T2ZTdGFydE9mZnNldCgpKSBcCisg
ICAgbWFjcm8oUmVnRXhwT2JqZWN0X2luZGljZXNNYXRlcmlhbGl6ZWQsIFJlZ0V4cE1hdGNoZXM6
Om9mZnNldE9mSW5kaWNlc01hdGVyaWFsaXplZCgpKSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0
X3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnLCBSZWdFeHBPYmplY3Q6Om9mZnNl
dE9mUmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcoKSkgXAogICAgIG1hY3JvKFJl
Z0V4cE9iamVjdF9sYXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkg
XAogICAgIG1hY3JvKFNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSwgT0JKRUNUX09GRlNFVE9G
KFNoYWRvd0NoaWNrZW46OlBhY2tldCwgY2FsbGVlKSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjY5Nzc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgyOSw2ICsxMjgyOSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2gg
KGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBQdWJsaWNM
ZW5ndGhQTG9jOgogICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgY2FzZSBSZWdFeHBNYXRjaGVzU3RhcnRPZmZzZXQ6CisgICAgICAgICAgICBjYXNlIFJlZ0V4
cE1hdGNoZXNJbmRpY2VzTWF0ZXJpYWxpemVkOgogICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQobG93SW50MzIoZWRnZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ZGVmYXVsdDoKQEAgLTEyODY3LDYgKzEyODY5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBBbGxvY2F0b3IgY2VsbEFsbG9jYXRvcjsKICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJl
LT50eXBlKCkgPT0gSlNUeXBlOjpBcnJheVR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGNlbGxB
bGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PEpTQXJyYXk+KHZt
KCksIEpTQXJyYXk6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSks
IEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHN0cnVjdHVyZS5nZXQoKSA9PSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2VsbEFs
bG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8UmVnRXhwTWF0Y2hl
cz4odm0oKSwgUmVnRXhwTWF0Y2hlczo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVD
YXBhY2l0eSgpKSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2VsbEFsbG9jYXRvciA9IGFsbG9j
YXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0oKSwgSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKSwgQWxs
b2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCkBAIC0xMzEwMiw3ICsxMzEwNywy
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghc2V0SW5saW5lT2Zmc2V0cy5nZXQo
aSkpCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuaW50NjRaZXJvLCBt
X291dC5hZGRyZXNzKG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKGkpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3Jp
cHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVz
Y3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNPcmln
UmVnRXhwOgorICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwgb2Jq
ZWN0LCBtX2hlYXBzLlJlZ0V4cE1hdGNoZXNfcmVnRXhwKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNTdGFydE9mZnNldDoK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2YWx1ZXNbaV0sIG9iamVjdCwgbV9o
ZWFwcy5SZWdFeHBNYXRjaGVzX3N0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIFJlZ0V4cE1hdGNoZXNJbmRpY2VzTWF0ZXJpYWxp
emVkOgorICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZhbHVlc1tpXSwgb2JqZWN0
LCBtX2hlYXBzLlJlZ0V4cE9iamVjdF9pbmRpY2VzTWF0ZXJpYWxpemVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihvYmplY3QpKTsKICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAob3V0ZXJDb250aW51YXRpb24pOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjY5Nzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzQXJyYXlTbG93SW5sCiAgICAgICAgIH0KICAgICAgICAgSlNP
YmplY3QqIGFyZ3VtZW50ID0gcHJveHktPnRhcmdldCgpOwogCi0gICAgICAgIGlmIChhcmd1bWVu
dC0+dHlwZSgpID09IEFycmF5VHlwZSB8fCAgYXJndW1lbnQtPnR5cGUoKSA9PSBEZXJpdmVkQXJy
YXlUeXBlKQorICAgICAgICBpZiAoYXJndW1lbnQtPnR5cGUoKSA9PSBBcnJheVR5cGUgfHwgYXJn
dW1lbnQtPnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAgICAgaWYgKGFyZ3VtZW50LT50eXBlKCkgIT0gUHJveHlPYmplY3RUeXBlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCShyZXZpc2lvbiAyNjk3NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAK
ICAgICBtYWNybyhpZ25vcmVDYXNlKSBcCiAgICAgbWFjcm8oaWdub3JlUHVuY3R1YXRpb24pIFwK
ICAgICBtYWNybyhpbmRleCkgXAorICAgIG1hY3JvKGluZGljZXMpIFwKICAgICBtYWNybyhpbmZl
cnJlZE5hbWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAogICAgIG1hY3JvKGluc3RydWN0aW9uQ291
bnQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlz
aW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBAIGlubGluZSBKU0FycmF5KiBhc0FycmF5
KEpTVmFsdWUgdmFsdWUpCiAKIGlubGluZSBib29sIGlzSlNBcnJheShKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgQVNTRVJUKChjZWxsLT5jbGFzc0luZm8oY2VsbC0+dm0oKSkgPT0gSlNBcnJheTo6aW5m
bygpKSA9PSAoY2VsbC0+dHlwZSgpID09IEFycmF5VHlwZSkpOworLy8gICAgIEFTU0VSVCgoY2Vs
bC0+Y2xhc3NJbmZvKGNlbGwtPnZtKCkpID09IEpTQXJyYXk6OmluZm8oKSkgPT0gKGNlbGwtPnR5
cGUoKSA9PSBBcnJheVR5cGUpKTsKICAgICByZXR1cm4gY2VsbC0+dHlwZSgpID09IEFycmF5VHlw
ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY5Nzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgz
LDcgQEAKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJlZmxlY3RPYmplY3Qu
aCIKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlJlZ0V4cE1hdGNo
ZXNBcnJheS5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJSZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIgpAQCAtNzk1LDcgKzc5NSw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoVk0mIHZtKQogCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAg
IG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgbV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNTdHJ1Y3R1cmUodm0sIHRoaXMpKTsK
KyAgICBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBj
cmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc1N0cnVjdHVyZSh2bSwgdGhpcykpOwogCiAgICAgbV9t
b2R1bGVSZWNvcmRTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewpAQCAtMTc0Miw4ICsxNzQzLDEwIEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmZpcmVXYXRjaHBvaW50QW5kTWEKIAogICAgIC8vIFNhbWUgZm9yIGFueSBz
cGVjaWFsIGFycmF5IHN0cnVjdHVyZXMuCiAgICAgU3RydWN0dXJlKiBzbG93UHV0U3RydWN0dXJl
OwotICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0
U3RydWN0dXJlKHZtLCB0aGlzKTsKKyAgICBzbG93UHV0U3RydWN0dXJlID0gY3JlYXRlUmVnRXhw
TWF0Y2hlc1Nsb3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CisgICAgc2xvd1B1
dFN0cnVjdHVyZSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzU2xvd1B1dFN0cnVjdHVyZSh2
bSwgdGhpcyk7CisgICAgbV9yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlLnNldCh2
bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgc2xvd1B1dFN0cnVjdHVyZSA9IENsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlU2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpOwogICAgIG1fY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgc2xvd1B1dFN0cnVjdHVyZSk7CiAKQEAgLTIwMjAsNiArMjAyMyw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB0aGlzT2JqZWN0LT5tX2RhdGFQcm9w
ZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBN
YXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVJl
Y29yZFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZU5h
bWVzcGFjZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNjk3NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTUsNiArNDE1LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2RhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
YWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CisgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1Y3R1cmU7CkBAIC04MjAsNiAr
ODIxLDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogZGF0YVByb3BlcnR5RGVzY3JpcHRvck9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9i
amVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjY2Vzc29yUHJvcGVy
dHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NvclBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiByZWdFeHBNYXRj
aGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVz
SW5kaWNlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCh0aGlz
KTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCShyZXZp
c2lvbiAyNjk3NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
UmVnRXhwQ2FjaGVkUmVzdWx0LmgiCiAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgotI2luY2x1
ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDkgKzU1LDkgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVk
UmVzdWx0OjpsYXN0UmVzdWx0KAogCiAgICAgICAgIEpTQXJyYXkqIHJlc3VsdCA9IG51bGxwdHI7
CiAgICAgICAgIGlmIChtX3Jlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheShnbG9iYWxPYmplY3QsIG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdF
eHAuZ2V0KCksIG1fcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVJl
Z0V4cE1hdGNoZXMoZ2xvYmFsT2JqZWN0LCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhw
LmdldCgpLCBtX3Jlc3VsdC5zdGFydCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGNyZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KGdsb2JhbE9iamVjdCwgbV9sYXN0SW5w
dXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjcmVh
dGVFbXB0eVJlZ0V4cE1hdGNoZXMoZ2xvYmFsT2JqZWN0LCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9s
YXN0UmVnRXhwLmdldCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CiAKICAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
cmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBSZWdFeHBNYXRjaGVzOjpzX2luZm8gPSB7ICJSZWdFeHBN
YXRjaGVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShSZWdFeHBNYXRjaGVzKSB9OworCitSZWdFeHBNYXRjaGVzOjp+UmVnRXhwTWF0Y2hlcygp
Cit7CisgICAgbV9yZWdFeHAuY2xlYXIoKTsKK30KKwordm9pZCBSZWdFeHBNYXRjaGVzOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBSZWdFeHBNYXRjaGVzKiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8UmVnRXhwTWF0Y2hlcyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPlJlZ0V4cE1h
dGNoZXM6On5SZWdFeHBNYXRjaGVzKCk7Cit9CisKK3ZvaWQgUmVnRXhwTWF0Y2hlczo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFJlZ0V4
cE1hdGNoZXMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlcyo+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fcmVnRXhwKTsKK30KKwordm9pZCBSZWdFeHBNYXRjaGVzOjptYXRlcmlh
bGl6ZUluZGljZXNQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBpZiAobV9pbmRpY2VzTWF0ZXJpYWxpemVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CisgICAgSlNWYWx1
ZSBpbnB1dFZhbHVlID0gZ2V0RGlyZWN0KFJlZ0V4cE1hdGNoZXM6OklucHV0UHJvcGVydHlPZmZz
ZXQpOworICAgIEFTU0VSVChpbnB1dFZhbHVlLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBpbnB1
dFN0cmluZyA9IGlucHV0VmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KS0+dmFsdWUoZ2xvYmFs
T2JqZWN0KTsKKworICAgIGludCBwb3NpdGlvbiA9IG1fcmVnRXhwLT5tYXRjaElubGluZShnbG9i
YWxPYmplY3QsIHZtLCBpbnB1dFN0cmluZywgbV9zdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3Vs
dHMpOworICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uICE9IC0xKTsKKworICAg
IG1hdGVyaWFsaXplSW5kaWNlc1Byb3BlcnR5KHZtLCBnbG9iYWxPYmplY3QsIG1fcmVnRXhwLmdl
dCgpLCBzdWJwYXR0ZXJuUmVzdWx0cy5kYXRhKCkpOworCisgICAgbV9yZWdFeHAuY2xlYXIoKTsK
K30KKworUmVnRXhwTWF0Y2hlcyogY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgUmVnRXhwKiByZWdFeHApCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIFJlZ0V4cE1hdGNoZXMqIG1hdGNo
ZXM7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgaGFuZGxlIGFycmF5IGFsbG9jYXRpb24g
ZXJyb3JzIGdyYWNlZnVsbHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTE0NAorCisgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0
KHZtLmhlYXApOworICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisg
ICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAg
ICAgICBtYXRjaGVzID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWRSZWdFeHBNYXRj
aGVzKHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVycm9y
IGhlcmUsIGJ1dAorICAgICAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91bGQg
Y2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCisgICAgICAgIC8vIGZ1bmN0aW9uIHdpbGwg
Y29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc4Ngor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRjaGVzKTsKKworICAgICAgICBtYXRjaGVzLT5pbml0
aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNFbXB0eVN0cmluZyh2bSkpOwor
CisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0
dGVybnMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJw
YXR0ZXJuczsgKytpKQorICAgICAgICAgICAgICAgIG1hdGNoZXMtPmluaXRpYWxpemVJbmRleFdp
dGhvdXRCYXJyaWVyKHNjb3BlLCBpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIG1hdGNoZXMgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0
Y2hlcyhzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1hdGNoZXMpOworCisgICAgICAgIG1hdGNoZXMtPmluaXRpYWxpemVJ
bmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAwLCBqc0VtcHR5U3RyaW5nKHZtKSwgQXJyYXlXaXRo
Q29udGlndW91cyk7CisKKyAgICAgICAgaWYgKHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gcmVn
RXhwLT5udW1TdWJwYXR0ZXJucygpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpCisgICAgICAgICAgICAgICAgbWF0Y2hlcy0+aW5p
dGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIGpzVW5kZWZpbmVkKCksIEFycmF5
V2l0aENvbnRpZ3VvdXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbWF0Y2hlcy0+cHV0RGly
ZWN0V2l0aG91dEJhcnJpZXIoUmVnRXhwTWF0Y2hlczo6SW5kZXhQcm9wZXJ0eU9mZnNldCwganNO
dW1iZXIoLTEpKTsKKyAgICBtYXRjaGVzLT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdFeHBN
YXRjaGVzOjpJbnB1dFByb3BlcnR5T2Zmc2V0LCBpbnB1dCk7CisgICAgbWF0Y2hlcy0+cHV0RGly
ZWN0VW5kZWZpbmVkKFJlZ0V4cE1hdGNoZXM6Okdyb3Vwc1Byb3BlcnR5T2Zmc2V0KTsKKyAgICBy
ZXR1cm4gbWF0Y2hlczsKK30KKworc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlSW5kaWNlc1N0cnVj
dHVyZUltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhp
bmdUeXBlKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlO
YW1lcy0+Z3JvdXBzLCAwLCBvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0
Y2hlczo6SW5kaWNlc0dyb3Vwc1Byb3BlcnR5T2Zmc2V0KTsKKyAgICByZXR1cm4gc3RydWN0dXJl
OworfQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBSZWdFeHBNYXRjaGVz
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoQ29udGlndW91cyk7
Cit9CisKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc1Nsb3dQdXRTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBSZWdFeHBN
YXRjaGVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSk7Cit9CisKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0luZGlj
ZXNTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IHJldHVybiBjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJh
eVdpdGhDb250aWd1b3VzKTsKK30KKworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5k
aWNlc1Nsb3dQdXRTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2Jq
ZWN0LCBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJCdXR0ZXJmbHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiR0NEZWZlcnJhbENvbnRleHRJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiUmVnRXhwSW5saW5lcy5oIgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnRXhwTWF0Y2hlcyA6IHB1YmxpYyBKU0FycmF5IHsK
KyAgICBmcmllbmQgUmVnRXhwTWF0Y2hlcyogY3JlYXRlUmVnRXhwTWF0Y2hlcyhWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBSZWdFeHAqLCB1bnNpZ25lZCwg
TWF0Y2hSZXN1bHQmKTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0FueUZvcm1P
ZkdldFByb3BlcnR5TmFtZXM7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgY29u
c3QgUHJvcGVydHlPZmZzZXQgSW5kZXhQcm9wZXJ0eU9mZnNldCA9IDEwMDsKKyAgICBzdGF0aWMg
Y29uc3QgUHJvcGVydHlPZmZzZXQgSW5wdXRQcm9wZXJ0eU9mZnNldCA9IDEwMTsKKyAgICBzdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgR3JvdXBzUHJvcGVydHlPZmZzZXQgPSAxMDI7CisgICAg
c3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IEluZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNldCA9
IDEwMDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAw
VSk7CisgICAgICAgIHJldHVybiBzaXplb2YoUmVnRXhwTWF0Y2hlcyk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gdm0ucmVnRXhwTWF0Y2hlc1NwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFJl
Z0V4cE1hdGNoZXMqIGNyZWF0ZVdpdGhCdXR0ZXJmbHkoVk0mIHZtLCBHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCisgICAgeworICAgICAgICBSZWdFeHBNYXRjaGVzKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXM+KHZtLmhlYXAsIGRlZmVycmFsQ29udGV4
dCkpIFJlZ0V4cE1hdGNoZXModm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgICAgIFJlZ0V4cE1hdGNoZXMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVn
RXhwTWF0Y2hlcyo+KG9iamVjdCk7CisKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luZGlj
ZXNNYXRlcmlhbGl6ZWQKKyAgICAgICAgICAgICYmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+aW5kaWNlcyB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+aW5w
dXQpKQorICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplSW5kaWNlc1Byb3Bl
cnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLCBU
eXBlSW5mbyhBcnJheVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBpbmRleGluZ1R5cGUp
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgICAgIHN0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5
TmFtZXMtPmluZGV4LCAwLCBvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4
cE1hdGNoZXM6OkluZGV4UHJvcGVydHlPZmZzZXQpOworICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pbnB1dCwgMCwgb2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA9PSBSZWdFeHBN
YXRjaGVzOjpJbnB1dFByb3BlcnR5T2Zmc2V0KTsKKyAgICAgICAgc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1l
cy0+Z3JvdXBzLCAwLCBvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1h
dGNoZXM6Okdyb3Vwc1Byb3BlcnR5T2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsK
KyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdHNEYXRhKFZNJiB2bSwgUmVnRXhwKiByZWdFeHAs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9yZWdFeHAuc2V0KHZtLCB0
aGlzLCByZWdFeHApOworICAgICAgICBtX3N0YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CisgICAg
fQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlZ0V4cCgpCisgICAgeworICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cE1hdGNoZXMsIG1fcmVnRXhwKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RhcnRPZmZzZXQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBNYXRjaGVzLCBtX3N0YXJ0T2Zmc2V0
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kaWNlc01hdGVyaWFs
aXplZCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cE1hdGNo
ZXMsIG1faW5kaWNlc01hdGVyaWFsaXplZCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgUmVnRXhwTWF0Y2hlcyhWTSYsIFN0cnVjdHVyZSosIEJ1dHRlcmZseSopOworCisgICAg
flJlZ0V4cE1hdGNoZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG1hdGVyaWFsaXplSW5kaWNl
c1Byb3BlcnR5SWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCopOworCisgICAgdm9pZCBtYXRl
cmlhbGl6ZUluZGljZXNQcm9wZXJ0eShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZ0V4cCogcmVnRXhwLCBpbnQqIHBhdHRlcm5SZXN1bHRzKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHJlZ0V4cCk7CisKKyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29w
ZSh2bSk7CisKKyAgICAgICAgYXV0byBjcmVhdGVJbmRleEFycmF5ID0gWyZdIChpbnQgc3RhcnQs
IGludCBlbmQpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDIpOworICAgICAgICAgICAgcmVzdWx0
LT5pbml0aWFsaXplSW5kZXgoc2NvcGUsIDAsIGpzTnVtYmVyKHN0YXJ0KSk7CisgICAgICAgICAg
ICByZXN1bHQtPmluaXRpYWxpemVJbmRleChzY29wZSwgMSwganNOdW1iZXIoZW5kKSk7CisKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAgICAgdW5zaWduZWQg
bnVtUGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxOworICAgICAgICBib29s
IGhhc05hbWVkQ2FwdHVyZXMgPSByZWdFeHAtPmhhc05hbWVkQ2FwdHVyZXMoKTsKKworICAgICAg
ICBKU0FycmF5KiBpbmRpY2VzQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSgpLCBudW1QYXR0ZXJucyk7
CisKKyAgICAgICAgSlNPYmplY3QqIGluZGljZXNHcm91cHMgPSBoYXNOYW1lZENhcHR1cmVzID8g
Y29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZSgpKSA6IG51bGxwdHI7CisgICAgICAgIGluZGljZXNBcnJheS0+cHV0RGlyZWN0
KHZtLCBSZWdFeHBNYXRjaGVzOjpJbmRpY2VzR3JvdXBzUHJvcGVydHlPZmZzZXQsIGhhc05hbWVk
Q2FwdHVyZXMgPyBpbmRpY2VzR3JvdXBzIDoganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgIGlu
dCBzdGFydCA9IHBhdHRlcm5SZXN1bHRzWzIgKiBpXTsKKyAgICAgICAgICAgIGlmIChzdGFydCA+
PSAwKQorICAgICAgICAgICAgICAgIGluZGljZXNBcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3Bl
LCBpLCBjcmVhdGVJbmRleEFycmF5KHN0YXJ0LCBwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0aWFs
aXplSW5kZXgoc2NvcGUsIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGhhc05hbWVkQ2FwdHVyZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPCBudW1QYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGdyb3VwTmFt
ZSA9IHJlZ0V4cC0+Z2V0Q2FwdHVyZUdyb3VwTmFtZShpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWdyb3VwTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGluZGljZXNHcm91cHMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgZ3JvdXBOYW1lKSwgaW5k
aWNlc0FycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRpY2VzLCBpbmRp
Y2VzQXJyYXkpOworCisgICAgICAgIG1faW5kaWNlc01hdGVyaWFsaXplZCA9IHRydWU7CisgICAg
fQorCisgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4gbV9yZWdFeHA7CisgICAgdW5zaWduZWQgbV9z
dGFydE9mZnNldDsKKyAgICBib29sIG1faW5kaWNlc01hdGVyaWFsaXplZDsKK307CisKK2lubGlu
ZSBSZWdFeHBNYXRjaGVzOjpSZWdFeHBNYXRjaGVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQorICAgIDogSlNBcnJheSh2bSwgc3RydWN0dXJlLCBi
dXR0ZXJmbHkpCisgICAgLCBtX2luZGljZXNNYXRlcmlhbGl6ZWQoZmFsc2UpCit7Cit9CisKK0FM
V0FZU19JTkxJTkUgUmVnRXhwTWF0Y2hlcyogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1h
dGNoZXMoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYgc2NvcGUsIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBudW1QYXR0
ZXJucykKK3sKKyAgICBWTSYgdm0gPSBzY29wZS52bSgpOworICAgIHVuc2lnbmVkIHZlY3Rvckxl
bmd0aCA9IG51bVBhdHRlcm5zOworICAgIGlmICh2ZWN0b3JMZW5ndGggPiBNQVhfU1RPUkFHRV9W
RUNUT1JfTEVOR1RIKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSB0cnVlOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0
dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCksIGhhc0luZGV4aW5nSGVhZGVyLCB2ZWN0b3JMZW5ndGggKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpLCBkZWZlcnJhbENvbnRleHQpOworICAgIGlmIChVTkxJS0VM
WSghYnV0dGVyZmx5KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBidXR0ZXJmbHkt
PnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOworICAgIGJ1dHRlcmZseS0+c2V0UHVibGlj
TGVuZ3RoKG51bVBhdHRlcm5zKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhdHRlcm5z
OyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpCisgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygp
LmF0VW5zYWZlKGkpLmNsZWFyKCk7CisKKyAgICBSZWdFeHBNYXRjaGVzKiByZXN1bHQgPSBSZWdF
eHBNYXRjaGVzOjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBkZWZlcnJhbENvbnRleHQsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0FMV0FZU19JTkxJTkUgUmVnRXhwTWF0Y2hlcyogdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWRSZWdFeHBNYXRjaGVzKE9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUmIHNjb3BlLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbnVtUGF0dGVybnMpCit7CisgICAgVk0mIHZt
ID0gc2NvcGUudm0oKTsKKyAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBudW1QYXR0ZXJuczsK
KyAgICBpZiAodmVjdG9yTGVuZ3RoID4gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICB1bnNpZ25lZCBvdXRPZkxpbmVTdG9yYWdlID0gc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5Owor
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOworICAgIHZlY3Rv
ckxlbmd0aCA9IEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0
cnVjdHVyZSwgbnVtUGF0dGVybnMpOworICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZtLAorICAgICAg
ICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZShpbmRleEJpYXMsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUs
IEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKSwKKyAgICAgICAgZGVmZXJyYWxD
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIGlmIChVTkxJ
S0VMWSghdGVtcCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1dHRlcmZseSA9IEJ1
dHRlcmZseTo6ZnJvbUJhc2UodGVtcCwgaW5kZXhCaWFzLCBvdXRPZkxpbmVTdG9yYWdlKTsKKyAg
ICAqYnV0dGVyZmx5LT5pbmRleGluZ0hlYWRlcigpID0gaW5kZXhpbmdIZWFkZXJGb3JBcnJheVN0
b3JhZ2UobnVtUGF0dGVybnMsIHZlY3Rvckxlbmd0aCk7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9y
YWdlID0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICBzdG9yYWdlLT5tX2luZGV4Qmlh
cyA9IGluZGV4QmlhczsKKyAgICBzdG9yYWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOworICAgIHN0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBudW1QYXR0ZXJuczsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1QYXR0ZXJuczsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQorICAgICAgICBzdG9y
YWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOworCisgICAgUmVnRXhwTWF0Y2hlcyogcmVzdWx0ID0g
UmVnRXhwTWF0Y2hlczo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBz
dHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisKKyAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBTFdBWVNfSU5MSU5FIFJlZ0V4cE1hdGNoZXMq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXMoCisgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1N0cmluZyogaW5wdXQsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSwKKyAgICBS
ZWdFeHAqIHJlZ0V4cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0JiByZXN1bHQp
Cit7CisgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKKyAgICAgICAgdm0uaGVh
cC52ZXJpZnlDYW5HQygpOworCisgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRz
OworICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2
bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBpZiAo
cG9zaXRpb24gPT0gLTEpIHsKKyAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXN1bHQuc3RhcnQgPSBw
b3NpdGlvbjsKKyAgICByZXN1bHQuZW5kID0gc3VicGF0dGVyblJlc3VsdHNbMV07CisKKyAgICBS
ZWdFeHBNYXRjaGVzKiBtYXRjaGVzOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhhbmRs
ZSBhcnJheSBhbGxvY2F0aW9uIGVycm9ycyBncmFjZWZ1bGx5LgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxNDQKKworICAgIHVuc2lnbmVkIG51bVN1
YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOworICAgIGJvb2wgaGFzTmFtZWRD
YXB0dXJlcyA9IHJlZ0V4cC0+aGFzTmFtZWRDYXB0dXJlcygpOworICAgIEpTT2JqZWN0KiBncm91
cHMgPSBoYXNOYW1lZENhcHR1cmVzID8gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9i
amVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKSA6IG51bGxwdHI7CisgICAgU3Ry
dWN0dXJlKiBtYXRjaFN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKCk7CisKKyAgICBhdXRvIHNldFByb3BlcnRpZXMgPSBbJl0gKCkgeworICAgICAg
ICBtYXRjaGVzLT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdFeHBNYXRjaGVzOjpJbmRleFBy
b3BlcnR5T2Zmc2V0LCBqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgbWF0Y2hlcy0+
cHV0RGlyZWN0V2l0aG91dEJhcnJpZXIoUmVnRXhwTWF0Y2hlczo6SW5wdXRQcm9wZXJ0eU9mZnNl
dCwgaW5wdXQpOworICAgICAgICBtYXRjaGVzLT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdF
eHBNYXRjaGVzOjpHcm91cHNQcm9wZXJ0eU9mZnNldCwgaGFzTmFtZWRDYXB0dXJlcyA/IGdyb3Vw
cyA6IGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIEFTU0VSVCghbWF0Y2hlcy0+YnV0dGVyZmx5
KCktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KG1hdGNoU3RydWN0dXJlKSk7CisgICAg
ICAgIGF1dG8gY2FwYWNpdHkgPSBtYXRjaFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsK
KyAgICAgICAgYXV0byBzaXplID0gbWF0Y2hTdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKTsKKyAg
ICAgICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obWF0Y2hlcy0+YnV0
dGVyZmx5KCktPmJhc2UoMCwgY2FwYWNpdHkpKSwgKGNhcGFjaXR5IC0gc2l6ZSkgKiBzaXplb2Yo
SlNWYWx1ZSkpOworICAgIH07CisKKyAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5pc0hh
dmluZ0FCYWRUaW1lKCkpKSB7CisgICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29u
dGV4dCh2bS5oZWFwKTsKKyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2
bSk7CisKKyAgICAgICAgbWF0Y2hlcyA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVk
UmVnRXhwTWF0Y2hlcyhzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgbWF0Y2hTdHJ1Y3R1cmUsIG51
bVN1YnBhdHRlcm5zICsgMSk7CisKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJs
eSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVycm9yIGhlcmUsIGJ1dAorICAgICAgICAvLyB3aGVu
IG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0
aGlzCisgICAgICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRp
b24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc4NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRj
aGVzKTsKKworICAgICAgICBzZXRQcm9wZXJ0aWVzKCk7CisKKyAgICAgICAgbWF0Y2hlcy0+aW5p
dGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZl
ZCh2bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAt
IHJlc3VsdC5zdGFydCkpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJw
YXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgdmFsdWUgPSBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBzdGFydCwgc3VicGF0dGVy
blJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICBtYXRjaGVzLT5pbml0
aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgaSwgdmFsdWUpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZt
LmhlYXApOworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKKyAg
ICAgICAgbWF0Y2hlcyA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzKHNjb3Bl
LCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMgKyAxKTsK
KworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBt
ZW1vcnkgZXJyb3IgaGVyZSwgYnV0CisgICAgICAgIC8vIHdoZW4gbWFraW5nIHRoaXMgY2hhbmdl
IHdlIHNob3VsZCBjaGVjayB0aGF0IGFsbCBjbGllbnRzIG9mIHRoaXMKKyAgICAgICAgLy8gZnVu
Y3Rpb24gd2lsbCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gZnJv
bSBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5Nzg2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGNoZXMpOworCisgICAgICAgIHNl
dFByb3BlcnRpZXMoKTsKKworICAgICAgICBtYXRjaGVzLT5pbml0aWFsaXplSW5kZXhXaXRob3V0
QmFycmllcihzY29wZSwgMCwganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAmZGVmZXJyYWxDb250
ZXh0LCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSwgQXJy
YXlXaXRoQ29udGlndW91cyk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBu
dW1TdWJwYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJu
UmVzdWx0c1syICogaV07CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAgICAg
aWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgdmFsdWUgPSBqc1N1YnN0cmluZ09mUmVz
b2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3Vs
dHNbMiAqIGkgKyAxIF0gLSBzdGFydCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgbWF0Y2hlcy0+aW5pdGlhbGl6
ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIHZhbHVlLCBBcnJheVdpdGhDb250aWd1b3Vz
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyB0aGUgb2JqZWN0IGlzIHNhZmUgdG8g
c2NhbiBieSBHQy4KKworICAgIC8vIFdlIGluaXRpYWxpemUgdGhlIGdyb3VwcyBvYmplY3QgbGF0
ZSBhcyBpdCBjb3VsZCBhbGxvY2F0ZSwgd2hpY2ggd2l0aCB0aGUgY3VycmVudCBBUEkgY291bGQg
Y2F1c2UKKyAgICAvLyBhbGxvY2F0aW9ucy4KKyAgICBpZiAoaGFzTmFtZWRDYXB0dXJlcykgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsK
KyAgICAgICAgICAgIFN0cmluZyBncm91cE5hbWUgPSByZWdFeHAtPmdldENhcHR1cmVHcm91cE5h
bWUoaSk7CisgICAgICAgICAgICBpZiAoIWdyb3VwTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgZ3JvdXBzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGdy
b3VwTmFtZSksIG1hdGNoZXMtPmdldEluZGV4UXVpY2tseShpKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBtYXRjaGVzLT5zZXRSZXN1bHRzRGF0YSh2bSwgcmVnRXhwLCBzdGFydE9mZnNldCk7
CisKKyAgICByZXR1cm4gbWF0Y2hlczsKK30KKworaW5saW5lIFJlZ0V4cE1hdGNoZXMqIGNyZWF0
ZVJlZ0V4cE1hdGNoZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0
cmluZywgUmVnRXhwKiByZWdFeHAsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgTWF0Y2hSZXN1bHQgaWdub3JlZFJlc3VsdDsKKyAgICBTdHJpbmcg
aW5wdXQgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRl
UmVnRXhwTWF0Y2hlcyh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIGlucHV0LCByZWdFeHAsIHN0
YXJ0T2Zmc2V0LCBpZ25vcmVkUmVzdWx0KSk7Cit9CisKK1JlZ0V4cE1hdGNoZXMqIGNyZWF0ZUVt
cHR5UmVnRXhwTWF0Y2hlcyhKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKik7CitT
dHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCopOworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc1N0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNTbG93UHV0
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhw
TWF0Y2hlc0luZGljZXNTbG93UHV0U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDI2OTc3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlZ0V4
cE1hdGNoZXNBcnJheS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSlNBcnJheSogY3JlYXRlRW1w
dHlSZWdFeHBNYXRjaGVzQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJp
bmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgSlNBcnJheSogYXJyYXk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
aGFuZGxlIGFycmF5IGFsbG9jYXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NAotICAgIAotICAgIEdDRGVm
ZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKLSAgICBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShnbG9iYWxPYmplY3Qt
PmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKLSAgICAgICAgYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFs
T2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0
ZXJucygpICsgMSk7Ci0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cg
YW4gb3V0IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKLSAgICAgICAgLy8gd2hlbiBtYWtpbmcg
dGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwotICAg
ICAgICAvLyBmdW5jdGlvbiB3aWxsIGNvcnJlY3RseSBoYW5kbGUgYW4gZXhjZXB0aW9uIGJlaW5n
IHRocm93biBmcm9tIGhlcmUuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk3ODYKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotCi0g
ICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNF
bXB0eVN0cmluZyh2bSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHVuc2lnbmVkIG51bVN1YnBh
dHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpCi0gICAgICAgICAgICAgICAg
YXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCBpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFycmF5ID0gdHJ5Q3JlYXRl
VW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShzY29wZSwgJmRlZmVycmFsQ29udGV4dCwg
Z2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1T
dWJwYXR0ZXJucygpICsgMSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKLSAgICAg
ICAgCi0gICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwg
MCwganNFbXB0eVN0cmluZyh2bSksIEFycmF5V2l0aENvbnRpZ3VvdXMpOwotICAgICAgICAKLSAg
ICAgICAgaWYgKHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJu
cygpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRl
cm5zOyArK2kpCi0gICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRC
YXJyaWVyKHNjb3BlLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGFycmF5LT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdF
eHBNYXRjaGVzQXJyYXlJbmRleFByb3BlcnR5T2Zmc2V0LCBqc051bWJlcigtMSkpOwotICAgIGFy
cmF5LT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdFeHBNYXRjaGVzQXJyYXlJbnB1dFByb3Bl
cnR5T2Zmc2V0LCBpbnB1dCk7Ci0gICAgYXJyYXktPnB1dERpcmVjdFdpdGhvdXRCYXJyaWVyKFJl
Z0V4cE1hdGNoZXNBcnJheUdyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKLSAg
ICByZXR1cm4gYXJyYXk7Ci19Ci0KLXN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZUlt
cGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlKQotewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBl
KTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+
aW5kZXgsIDAsIG9mZnNldCk7Ci0gICAgQVNTRVJUKG9mZnNldCA9PSBSZWdFeHBNYXRjaGVzQXJy
YXlJbmRleFByb3BlcnR5T2Zmc2V0KTsKLSAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbnB1dCwg
MCwgb2Zmc2V0KTsKLSAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0
UHJvcGVydHlPZmZzZXQpOwotICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmdyb3VwcywgMCwgb2Zm
c2V0KTsKLSAgICBBU1NFUlQob2Zmc2V0ID09IFJlZ0V4cE1hdGNoZXNBcnJheUdyb3Vwc1Byb3Bl
cnR5T2Zmc2V0KTsKLSAgICByZXR1cm4gc3RydWN0dXJlOwotfQotCi1TdHJ1Y3R1cmUqIGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUltcGwodm0sIGdsb2JhbE9i
amVjdCwgQXJyYXlXaXRoQ29udGlndW91cyk7Ci19Ci0KLVN0cnVjdHVyZSogY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUltcGwodm0sIGdsb2JhbE9i
amVjdCwgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
TWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShub25leGlzdGVudCkKQEAgLTEsMTc4ICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgotI2luY2x1ZGUgIkdDRGVm
ZXJyYWxDb250ZXh0SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJPYmpl
Y3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlJlZ0V4cElubGluZXMuaCIKLSNpbmNsdWRlICJS
ZWdFeHBPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBjb25zdCBQcm9wZXJ0
eU9mZnNldCBSZWdFeHBNYXRjaGVzQXJyYXlJbmRleFByb3BlcnR5T2Zmc2V0ID0gMTAwOwotc3Rh
dGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0UHJvcGVydHlP
ZmZzZXQgPSAxMDE7Ci1zdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0Fy
cmF5R3JvdXBzUHJvcGVydHlPZmZzZXQgPSAxMDI7Ci0KLUFMV0FZU19JTkxJTkUgSlNBcnJheSog
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlJiBzY29wZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCi17Ci0gICAgVk0mIHZt
ID0gc2NvcGUudm0oKTsKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBpbml0aWFsTGVuZ3Ro
OwotICAgIGlmICh2ZWN0b3JMZW5ndGggPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbnN0IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIg
PSB0cnVlOwotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksIGhhc0luZGV4aW5nSGVhZGVyLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpLCBkZWZlcnJhbENvbnRleHQpOwotICAgIGlmIChVTkxJS0VMWSghYnV0dGVyZmx5KSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBidXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aCh2
ZWN0b3JMZW5ndGgpOwotICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGluaXRpYWxMZW5n
dGgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gaW5pdGlhbExlbmd0aDsgaSA8IHZlY3Rvckxl
bmd0aDsgKytpKQotICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdFVuc2FmZShpKS5j
bGVhcigpOwotCi0gICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRl
cmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0KLSAgICBz
Y29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1B
TFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSgKLSAgICBWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgY29uc3Qg
U3RyaW5nJiBpbnB1dFZhbHVlLAotICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKLXsKLSAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRl
REZHRG9lc0dDKQotICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7Ci0KLSAgICBWZWN0b3I8
aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5t
YXRjaElubGluZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3Vi
cGF0dGVyblJlc3VsdHMpOwotICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewotICAgICAgICByZXN1
bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOwotICAgIHJlc3VsdC5lbmQgPSBzdWJw
YXR0ZXJuUmVzdWx0c1sxXTsKLSAgICAKLSAgICBKU0FycmF5KiBhcnJheTsKLQotICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJyYXkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxs
eS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0
Ci0gICAgCi0gICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRl
cm5zKCk7Ci0gICAgYm9vbCBoYXNOYW1lZENhcHR1cmVzID0gcmVnRXhwLT5oYXNOYW1lZENhcHR1
cmVzKCk7Ci0gICAgSlNPYmplY3QqIGdyb3VwcyA9IGhhc05hbWVkQ2FwdHVyZXMgPyBjb25zdHJ1
Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0
dXJlKCkpIDogbnVsbHB0cjsKLSAgICBTdHJ1Y3R1cmUqIG1hdGNoU3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKLQotICAgIGF1dG8gc2V0UHJv
cGVydGllcyA9IFsmXSAoKSB7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1h
dGNoZXNBcnJheUluZGV4UHJvcGVydHlPZmZzZXQsIGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwot
ICAgICAgICBhcnJheS0+cHV0RGlyZWN0KHZtLCBSZWdFeHBNYXRjaGVzQXJyYXlJbnB1dFByb3Bl
cnR5T2Zmc2V0LCBpbnB1dCk7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1h
dGNoZXNBcnJheUdyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBoYXNOYW1lZENhcHR1cmVzID8gZ3JvdXBz
IDoganNVbmRlZmluZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUKCFhcnJheS0+YnV0dGVyZmx5KCkt
PmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KG1hdGNoU3RydWN0dXJlKSk7Ci0gICAgICAg
IGF1dG8gY2FwYWNpdHkgPSBtYXRjaFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAg
ICAgICAgYXV0byBzaXplID0gbWF0Y2hTdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKTsKLSAgICAg
ICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oYXJyYXktPmJ1dHRlcmZs
eSgpLT5iYXNlKDAsIGNhcGFjaXR5KSksIChjYXBhY2l0eSAtIHNpemUpICogc2l6ZW9mKEpTVmFs
dWUpKTsKLSAgICB9OwotCi0gICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdB
QmFkVGltZSgpKSkgewotICAgICAgICBHQ0RlZmVycmFsQ29udGV4dCBkZWZlcnJhbENvbnRleHQo
dm0uaGVhcCk7Ci0gICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOwot
ICAgICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVk
KHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMg
KyAxKTsKLQotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91
dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0Ci0gICAgICAgIC8vIHdoZW4gbWFraW5nIHRoaXMg
Y2hhbmdlIHdlIHNob3VsZCBjaGVjayB0aGF0IGFsbCBjbGllbnRzIG9mIHRoaXMKLSAgICAgICAg
Ly8gZnVuY3Rpb24gd2lsbCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJv
d24gZnJvbSBoZXJlLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5Nzg2Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKLQotICAgICAg
ICBzZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIAotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRl
ZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5z
dGFydCkpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1T
dWJwYXR0ZXJuczsgKytpKSB7Ci0gICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVz
dWx0c1syICogaV07Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICAgICAgaWYg
KHN0YXJ0ID49IDApCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBqc1N1YnN0cmluZ09mUmVzb2x2
ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNb
MiAqIGkgKyAxXSAtIHN0YXJ0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4
V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKLSAg
ICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAgICAgIGFycmF5
ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShzY29wZSwgJmRlZmVy
cmFsQ29udGV4dCwgbWF0Y2hTdHJ1Y3R1cmUsIG51bVN1YnBhdHRlcm5zICsgMSk7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVy
cm9yIGhlcmUsIGJ1dAotICAgICAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91
bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCi0gICAgICAgIC8vIGZ1bmN0aW9uIHdp
bGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc4
NgotICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7Ci0gICAgICAgIAotICAgICAgICBzZXRQ
cm9wZXJ0aWVzKCk7Ci0gICAgICAgIAotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0
aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRlZmVycmFs
Q29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCks
IEFycmF5V2l0aENvbnRpZ3VvdXMpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7Ci0gICAgICAgICAgICBpbnQgc3RhcnQg
PSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwot
ICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBqc1N1
YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBzdGFydCwgc3Vi
cGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBhcnJheS0+
aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIHZhbHVlLCBBcnJheVdpdGhD
b250aWd1b3VzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdyB0aGUgb2JqZWN0IGlz
IHNhZmUgdG8gc2NhbiBieSBHQy4KLQotICAgIC8vIFdlIGluaXRpYWxpemUgdGhlIGdyb3VwcyBv
YmplY3QgbGF0ZSBhcyBpdCBjb3VsZCBhbGxvY2F0ZSwgd2hpY2ggd2l0aCB0aGUgY3VycmVudCBB
UEkgY291bGQgY2F1c2UKLSAgICAvLyBhbGxvY2F0aW9ucy4KLSAgICBpZiAoaGFzTmFtZWRDYXB0
dXJlcykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5z
OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBncm91cE5hbWUgPSByZWdFeHAtPmdldENhcHR1
cmVHcm91cE5hbWUoaSk7Ci0gICAgICAgICAgICBpZiAoIWdyb3VwTmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgZ3JvdXBzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIGdyb3VwTmFtZSksIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW5saW5lIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyog
c3RyaW5nLCBSZWdFeHAqIHJlZ0V4cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpCi17Ci0gICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0KLSAgICBNYXRjaFJlc3VsdCBpZ25vcmVkUmVzdWx0OwotICAgIFN0cmlu
ZyBpbnB1dCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkodm0sIGdsb2JhbE9iamVjdCwgc3RyaW5nLCBpbnB1dCwgcmVn
RXhwLCBzdGFydE9mZnNldCwgaWdub3JlZFJlc3VsdCkpOwotfQotSlNBcnJheSogY3JlYXRlRW1w
dHlSZWdFeHBNYXRjaGVzQXJyYXkoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCop
OwotU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCopOwotU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJ
KHJldmlzaW9uIDI2OTc3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlZ0V4
cEdsb2JhbERhdGFJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisj
aW5jbHVkZSAiUmVnRXhwTWF0Y2hlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIEpTVmFsdWUgUmVnRXhwT2Jq
ZWN0OjpleGVjSW5saW5lKAogICAgIAogICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKICAgICBKU0Fy
cmF5KiBhcnJheSA9Ci0gICAgICAgIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFs
T2JqZWN0LCBzdHJpbmcsIGlucHV0LCByZWdFeHAsIGxhc3RJbmRleCwgcmVzdWx0KTsKKyAgICAg
ICAgY3JlYXRlUmVnRXhwTWF0Y2hlcyh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIGlucHV0LCBy
ZWdFeHAsIGxhc3RJbmRleCwgcmVzdWx0KTsKICAgICBpZiAoIWFycmF5KSB7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI2OTc3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDYgKzE0Nyw3IEBACiAjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJS
YW5kb21pemluZ0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKKyNpbmNs
dWRlICJSZWdFeHBNYXRjaGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpAQCAt
MTUwMCw2ICsxNTAxLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hdGl2ZVN0ZEZ1bmN0
aW9uU3BhY2UsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQ
cm94eU9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94
eVJldm9rZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJldm9rZSkgLy8gSGFz
aDoweGI1MDZhOTM5CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocmVn
RXhwTWF0Y2hlc1NwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBNYXRjaGVzKQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFyZ3VtZW50c1Rh
YmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlw
dEZldGNoUGFyYW1ldGVyc1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1NjcmlwdEZldGNoUGFyYW1ldGVycykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTU2NyaXB0RmV0Y2hlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMjY5Nzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTIyLDYgKzUyMiw3IEBAIHB1YmxpYzoKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHJlZ0V4cE1hdGNoZXNTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3VtZW50
c1RhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3Jp
cHRGZXRjaFBhcmFtZXRlcnNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNjcmlwdEZldGNoZXJTcGFjZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTc3NCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDIwLTExLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBwcm9wb3NhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0LgorCisg
ICAgICAgICoganMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzOgor
CiAyMDIwLTExLTEzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBDU1MgYmFja2Ryb3Agb3ZlcmxheSBjb3JuZXJzIGFyZSBub3Qgcm91bmRl
ZCBvbiByZXN1bHRzLndlYmtpdC5vcmcKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ2V4cC1uYW1l
ZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY5
Nzc0KQorKysgTGF5b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOCwzMCArOCw0NCBAQCBQQVNTIGV4ZWNSZXN1bHQx
WzBdIGlzICIwMS8wMi8yMDAxIgogUEFTUyBleGVjUmVzdWx0MS5ncm91cHMubW9udGggaXMgIjAx
IgogUEFTUyBleGVjUmVzdWx0MS5ncm91cHMuZGF5IGlzICIwMiIKIFBBU1MgZXhlY1Jlc3VsdDEu
Z3JvdXBzLnllYXIgaXMgIjIwMDEiCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4
ZWNSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJp
bnB1dCIsImxlbmd0aCJdCitQQVNTIGV4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBzLm1vbnRoIGlz
IFswLDJdCitQQVNTIGV4ZWNSZXN1bHQxLmluZGljZXMuZ3JvdXBzLmRheSBpcyBbMyw1XQorUEFT
UyBleGVjUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy55ZWFyIGlzIFs2LDEwXQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwi
MyIsImdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIsImlucHV0IiwibGVuZ3RoIl0KIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhlY1Jlc3VsdDEuZ3JvdXBzKS5zb3J0KCkgaXMgWyJk
YXkiLCJtb250aCIsInllYXIiXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhleGVj
UmVzdWx0MS5pbmRpY2VzLmdyb3Vwcykuc29ydCgpIGlzIFsiZGF5IiwibW9udGgiLCJ5ZWFyIl0K
IFBBU1MgbWF0Y2hSZXN1bHQxWzBdIGlzICIwMS8wMi8yMDAxIgogUEFTUyBtYXRjaFJlc3VsdDEu
Z3JvdXBzLm1vbnRoIGlzICIwMSIKIFBBU1MgbWF0Y2hSZXN1bHQxLmdyb3Vwcy5kYXkgaXMgIjAy
IgogUEFTUyBtYXRjaFJlc3VsdDEuZ3JvdXBzLnllYXIgaXMgIjIwMDEiCi1QQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwi
MyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXQorUEFTUyBtYXRjaFJlc3VsdDEu
aW5kaWNlcy5ncm91cHMubW9udGggaXMgWzAsMl0KK1BBU1MgbWF0Y2hSZXN1bHQxLmluZGljZXMu
Z3JvdXBzLmRheSBpcyBbMyw1XQorUEFTUyBtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMueWVh
ciBpcyBbNiwxMF0KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQx
KS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwi
aW5wdXQiLCJsZW5ndGgiXQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJl
c3VsdDEuZ3JvdXBzKS5zb3J0KCkgaXMgWyJkYXkiLCJtb250aCIsInllYXIiXQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMpLnNvcnQo
KSBpcyBbImRheSIsIm1vbnRoIiwieWVhciJdCiBQQVNTIG1hdGNoUmVzdWx0MmFbMF0gaXMgIkpv
aG4gVy4gU21pdGgiCiBQQVNTIG1hdGNoUmVzdWx0MmFbMV0gaXMgIkpvaG4iCiBQQVNTIG1hdGNo
UmVzdWx0MmFbMl0gaXMgIlcuIgogUEFTUyBtYXRjaFJlc3VsdDJhWzNdIGlzICJTbWl0aCIKK1BB
U1MgbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzFdIGlzIFswLDRdCitQQVNTIG1hdGNoUmVzdWx0MmEu
aW5kaWNlc1syXSBpcyBbNSw3XQorUEFTUyBtYXRjaFJlc3VsdDJhLmluZGljZXNbM10gaXMgWzgs
MTNdCiBQQVNTIG1hdGNoUmVzdWx0MmFbMV0gaXMgbWF0Y2hSZXN1bHQyYS5ncm91cHMuZmlyc3Rf
bmFtZQogUEFTUyBtYXRjaFJlc3VsdDJhWzJdIGlzIG1hdGNoUmVzdWx0MmEuZ3JvdXBzLm1pZGRs
ZV9pbml0aWFsCiBQQVNTIG1hdGNoUmVzdWx0MmFbM10gaXMgbWF0Y2hSZXN1bHQyYS5ncm91cHMu
bGFzdF9uYW1lCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSku
c29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5n
dGgiXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQo
KSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIs
Imxlbmd0aCJdCiBQQVNTIG1hdGNoUmVzdWx0MmJbMF0gaXMgIlNhbGx5IEJyb3duIgogUEFTUyBt
YXRjaFJlc3VsdDJiWzFdIGlzICJTYWxseSIKIFBBU1MgbWF0Y2hSZXN1bHQyYlsyXSBpcyB1bmRl
ZmluZWQuCiBQQVNTIG1hdGNoUmVzdWx0MmJbM10gaXMgIkJyb3duIgorUEFTUyBtYXRjaFJlc3Vs
dDJiLmluZGljZXNbMV0gaXMgWzAsNV0KK1BBU1MgbWF0Y2hSZXN1bHQyYi5pbmRpY2VzWzJdIGlz
IHVuZGVmaW5lZC4KK1BBU1MgbWF0Y2hSZXN1bHQyYi5pbmRpY2VzWzNdIGlzIFs2LDExXQogUEFT
UyBtYXRjaFJlc3VsdDJiWzFdIGlzIG1hdGNoUmVzdWx0MmIuZ3JvdXBzLmZpcnN0X25hbWUKIFBB
U1MgbWF0Y2hSZXN1bHQyYlsyXSBpcyBtYXRjaFJlc3VsdDJiLmdyb3Vwcy5taWRkbGVfaW5pdGlh
bAogUEFTUyBtYXRjaFJlc3VsdDJiWzNdIGlzIG1hdGNoUmVzdWx0MmIuZ3JvdXBzLmxhc3RfbmFt
ZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKSBp
cyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0KK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkgaXMgWyIw
IiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwiaW5wdXQiLCJsZW5ndGgi
XQogUEFTUyByZTMudG9TdHJpbmcoKSBpcyAiXC9eKD88cGFydDE+LiopOig/PHBhcnQyPi4qKTpc
XGs8cGFydDI+OlxcazxwYXJ0MT4kXC8iCiBQQVNTIHJlMy50ZXN0KCJhOmI6YjphIikgaXMgdHJ1
ZQogUEFTUyByZTMudGVzdCgiYTphOmE6YSIpIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vw
cy5qcwkocmV2aXNpb24gMjY5Nzc0KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTIsMTYgKzEy
LDI0IEBAIHNob3VsZEJlKCdleGVjUmVzdWx0MVswXScsICciMDEvMDIvMjAwMSIKIHNob3VsZEJl
KCdleGVjUmVzdWx0MS5ncm91cHMubW9udGgnLCAnIjAxIicpOwogc2hvdWxkQmUoJ2V4ZWNSZXN1
bHQxLmdyb3Vwcy5kYXknLCAnIjAyIicpOwogc2hvdWxkQmUoJ2V4ZWNSZXN1bHQxLmdyb3Vwcy55
ZWFyJywgJyIyMDAxIicpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4
ZWNSZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJp
bnB1dCIsImxlbmd0aCJdJyk7CitzaG91bGRCZSgnZXhlY1Jlc3VsdDEuaW5kaWNlcy5ncm91cHMu
bW9udGgnLCAnWzAsMl0nKTsKK3Nob3VsZEJlKCdleGVjUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5k
YXknLCAnWzMsNV0nKTsKK3Nob3VsZEJlKCdleGVjUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy55ZWFy
JywgJ1s2LDEwXScpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWNS
ZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRp
Y2VzIiwiaW5wdXQiLCJsZW5ndGgiXScpOwogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGV4ZWNSZXN1bHQxLmdyb3Vwcykuc29ydCgpJywgJ1siZGF5IiwibW9udGgiLCJ5ZWFy
Il0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhleGVjUmVzdWx0MS5p
bmRpY2VzLmdyb3Vwcykuc29ydCgpJywgJ1siZGF5IiwibW9udGgiLCJ5ZWFyIl0nKTsKIAogdmFy
IG1hdGNoUmVzdWx0MSA9IHNyYzEubWF0Y2gocmUxKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDFb
MF0nLCAnIjAxLzAyLzIwMDEiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmdyb3Vwcy5tb250
aCcsICciMDEiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmdyb3Vwcy5kYXknLCAnIjAyIicp
Owogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MS5ncm91cHMueWVhcicsICciMjAwMSInKTsKLXNob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdb
IjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3No
b3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMubW9udGgnLCAnWzAsMl0nKTsKK3No
b3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMuZGF5JywgJ1szLDVdJyk7CitzaG91
bGRCZSgnbWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBzLnllYXInLCAnWzYsMTBdJyk7CitzaG91
bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCknLCAn
WyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwiaW5wdXQiLCJsZW5n
dGgiXScpOwogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0
MS5ncm91cHMpLnNvcnQoKScsICdbImRheSIsIm1vbnRoIiwieWVhciJdJyk7CitzaG91bGRCZSgn
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBzKS5z
b3J0KCknLCAnWyJkYXkiLCJtb250aCIsInllYXIiXScpOwogCiB2YXIgcmUyID0gLyg/PGZpcnN0
X25hbWU+XHcrKVxzKD86KD88bWlkZGxlX2luaXRpYWw+XHdcLilccyk/KD88bGFzdF9uYW1lPlx3
KykvOwogdmFyIG1hdGNoUmVzdWx0MmEgPSAiSm9obiBXLiBTbWl0aCIubWF0Y2gocmUyKTsKQEAg
LTMwLDEwICszOCwxMyBAQCBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYVswXScsICciSm9obiBXLiBT
CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYVsxXScsICciSm9obiInKTsKIHNob3VsZEJlKCdtYXRj
aFJlc3VsdDJhWzJdJywgJyJXLiInKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzNdJywgJyJT
bWl0aCInKTsKK3Nob3VsZEJlKCdtYXRjaFJlc3VsdDJhLmluZGljZXNbMV0nLCAnWzAsNF0nKTsK
K3Nob3VsZEJlKCdtYXRjaFJlc3VsdDJhLmluZGljZXNbMl0nLCAnWzUsN10nKTsKK3Nob3VsZEJl
KCdtYXRjaFJlc3VsdDJhLmluZGljZXNbM10nLCAnWzgsMTNdJyk7CiBzaG91bGRCZSgnbWF0Y2hS
ZXN1bHQyYVsxXScsICdtYXRjaFJlc3VsdDJhLmdyb3Vwcy5maXJzdF9uYW1lJyk7CiBzaG91bGRC
ZSgnbWF0Y2hSZXN1bHQyYVsyXScsICdtYXRjaFJlc3VsdDJhLmdyb3Vwcy5taWRkbGVfaW5pdGlh
bCcpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbM10nLCAnbWF0Y2hSZXN1bHQyYS5ncm91cHMu
bGFzdF9uYW1lJyk7Ci1zaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hS
ZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1
dCIsImxlbmd0aCJdJyk7CitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0
Y2hSZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJp
bmRpY2VzIiwiaW5wdXQiLCJsZW5ndGgiXScpOwogCiAvLyBWZXJpZnkgdGhhdCBuYW1lZCBncm91
cHMgdGhhdCBhcmVuJ3QgbWF0Y2hlZCBhcmUgdW5kZWZpbmVkLgogdmFyIG1hdGNoUmVzdWx0MmIg
PSAiU2FsbHkgQnJvd24iLm1hdGNoKHJlMik7CkBAIC00MiwxMCArNTMsMTMgQEAgc2hvdWxkQmUo
J21hdGNoUmVzdWx0MmJbMF0nLCAnIlNhbGx5IEJybwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmJb
MV0nLCAnIlNhbGx5IicpOwogc2hvdWxkQmVVbmRlZmluZWQoJ21hdGNoUmVzdWx0MmJbMl0nKTsK
IHNob3VsZEJlKCdtYXRjaFJlc3VsdDJiWzNdJywgJyJCcm93biInKTsKK3Nob3VsZEJlKCdtYXRj
aFJlc3VsdDJiLmluZGljZXNbMV0nLCAnWzAsNV0nKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCdtYXRj
aFJlc3VsdDJiLmluZGljZXNbMl0nKTsKK3Nob3VsZEJlKCdtYXRjaFJlc3VsdDJiLmluZGljZXNb
M10nLCAnWzYsMTFdJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlsxXScsICdtYXRjaFJlc3Vs
dDJiLmdyb3Vwcy5maXJzdF9uYW1lJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlsyXScsICdt
YXRjaFJlc3VsdDJiLmdyb3Vwcy5taWRkbGVfaW5pdGlhbCcpOwogc2hvdWxkQmUoJ21hdGNoUmVz
dWx0MmJbM10nLCAnbWF0Y2hSZXN1bHQyYi5ncm91cHMubGFzdF9uYW1lJyk7Ci1zaG91bGRCZSgn
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwi
MSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1dCIsImxlbmd0aCJdJyk7CitzaG91bGRC
ZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCknLCAnWyIw
IiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwiaW5wdXQiLCJsZW5ndGgi
XScpOwogCiAvLyBWZXJpZnkgdGhhdCBuYW1lZCBiYWNrcmVmZXJlbmNlcyB3b3JrLgogdmFyIHJl
MyA9IC9eKD88cGFydDE+LiopOig/PHBhcnQyPi4qKTpcazxwYXJ0Mj46XGs8cGFydDE+JC87Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418302</attachid>
            <date>2021-01-25 10:15:30 -0800</date>
            <delta_ts>2021-02-17 14:21:18 -0800</delta_ts>
            <desc>Patch using &apos;d&apos; flag conforming to latest proposal</desc>
            <filename>202475-d-flag.patch</filename>
            <type>text/plain</type>
            <size>39975</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzE3OTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9zdGF0aWMtZ2V0dGVyLWluLW5hbWVz
LmpzOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDEtMjEgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBKU1Byb21pc2Ug
c2hvdWxkIG5vdCBwcm9wYWdhdGUgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yCkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9zdGF0aWMtZ2V0dGVyLWluLW5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3N0YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMJKHJldmlzaW9uIDI3MTc5NikKKysr
IEpTVGVzdHMvc3RyZXNzL3N0YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTMsNSArMyw1IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwogfQogCi1zaG91
bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAucHJv
dG90eXBlKS5zb3J0KCkpLCAnWyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJkb3RBbGwiLCJleGVj
IiwiZmxhZ3MiLCJnbG9iYWwiLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwic291cmNlIiwic3Rp
Y2t5IiwidGVzdCIsInRvU3RyaW5nIiwidW5pY29kZSJdJyk7CitzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkp
LCAnWyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJkb3RBbGwiLCJleGVjIiwiZmxhZ3MiLCJnbG9i
YWwiLCJpZ25vcmVDYXNlIiwiaW5kaWNlcyIsIm11bHRpbGluZSIsInNvdXJjZSIsInN0aWNreSIs
InRlc3QiLCJ0b1N0cmluZyIsInVuaWNvZGUiXScpOwogc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoL0NvY29hLykuc29ydCgpKSwgJ1sibGFzdEluZGV4
Il0nKTsKSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwJKHJldmlzaW9uIDI3MTc5NikKKysrIEpTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQCBza2lw
OgogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKLSAgICAtIHJlZ2V4cC1t
YXRjaC1pbmRpY2VzCiAgICAgLSB0b3AtbGV2ZWwtYXdhaXQKICAgICAtIEludGwuTGlzdEZvcm1h
dAogICBwYXRoczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxNzk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQ3IEBACisyMDIxLTAxLTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBwcm9w
b3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
NDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyB3b3JrIGluIHByb2dyZXNzLgorCisgICAgICAgIFRoaXMgaXMgYSBtb2RpZmllZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGlzIHByb3Bvc2FsLiAgSXQgaW5jbHVkZXMgYSBuZXcgJ2QnIGZsYWcg
dG8gUmVnRXhwJ3MgdG8KKyAgICAgICAgdHJpZ2dlciB0aGUgcG9wdWxhdGlvbiBvZiB0aGUgJ2lu
ZGljZXMnIHByb3BlcnR5IHRyZWUgaW4gdGhlIE1hdGNoZXMgcmVzdWx0LiAgVGhpcyBpcyAKKyAg
ICAgICAgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBleGlzdGluZyBiZW5jaG1hcmtzLi4KKworICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZmlyZVdhdGNocG9pbnRBbmRNYWtlQWxsQXJy
YXlTdHJ1Y3R1cmVzU2xvd1B1dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJl
Z0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRPbmVUZXN0KToKKyAgICAgICAgKEpT
Qzo6cmVnZXhwVG9Tb3VyY2VTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcC4KKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cE1hdGNoZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmguCisgICAgICAgICogcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1w
bCk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1
dFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpmbGFnc1N0cmluZyk6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogeWFyci9ZYXJyRmxhZ3MuY3Bw
OgorICAgICAgICAoSlNDOjpZYXJyOjpwYXJzZUZsYWdzKToKKyAgICAgICAgKiB5YXJyL1lhcnJG
bGFncy5oOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6
OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6aW5kaWNlcyBjb25zdCk6CisgICAgICAgICogeWFyci9Z
YXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6aW5kaWNlcyBj
b25zdCk6CisKIDIwMjEtMDEtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBEZWZlcnJlZFdvcmtUaW1lciBzaG91bGQgY2xlYXIgcGVuZGluZyB0
YXNrIGFmdGVyIHJ1bm5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjcxNzk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTk1LDEyICs1OTUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGlmICgobV9ub2RlLT5vcCgpID09IFJlZ0V4cEV4ZWMgfHwgbV9ub2RlLT5vcCgpID09
IFJlZ0V4cEV4ZWNOb25HbG9iYWxPclN0aWNreSkgJiYgcmVnRXhwLT5oYXNOYW1lZENhcHR1cmVz
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NjQKLSAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVt
ZW50IHN0cmVuZ3RoIHJlZHVjdGlvbiBvcHRpbWl6YXRpb24gZm9yIG5hbWVkIGNhcHR1cmUgZ3Jv
dXBzLgotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG9mIG5hbWVkIGNhcHR1cmUgZ3JvdXBz
LlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjIHx8IG1fbm9kZS0+b3AoKSA9PSBSZWdF
eHBFeGVjTm9uR2xvYmFsT3JTdGlja3kpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWdF
eHAtPmhhc05hbWVkQ2FwdHVyZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NjQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudCBzdHJlbmd0aCByZWR1Y3Rpb24gb3B0aW1p
emF0aW9uIGZvciBuYW1lZCBjYXB0dXJlIGdyb3Vwcy4KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIG9mIG5hbWVkIGNhcHR1cmUgZ3JvdXBzLlxuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBpZiAocmVnRXhwLT5pbmRpY2VzKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwOTMwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnQgc3RyZW5ndGggcmVk
dWN0aW9uIG9wdGltaXphdGlvbiBmb3IgUmVnRXhwIHdpdGggbWF0Y2ggaW5kaWNlcy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG9mIG1hdGNoIGluZGljZXMuXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2lu
dHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHJldmlzaW9uIDI3MTc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBA
QAogICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpZ25vcmVQdW5jdHVhdGlvbikg
XAogICAgIG1hY3JvKGluZGV4KSBcCisgICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGlu
ZmVycmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25D
b3VudCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjcxNzk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTYsNiArNzk2
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVn
RXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7
CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX3JlZ0V4cE1hdGNo
ZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVz
SW5kaWNlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0
cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CkBAIC0xNzQ0LDYgKzE3NDUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpm
aXJlV2F0Y2hwb2ludEFuZE1hCiAgICAgU3RydWN0dXJlKiBzbG93UHV0U3RydWN0dXJlOwogICAg
IHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlKHZtLCB0aGlzKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVS
ZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcyk7CisgICAg
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0
dXJlKTsKICAgICBzbG93UHV0U3RydWN0dXJlID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93
UHV0U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9j
bG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsK
IApAQCAtMjAyMCw2ICsyMDIzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbAogICAgIHRoaXNPYmplY3QtPm1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVy
dHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1
Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZp
c2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3MTc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw2ICs0
MTQsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9hY2Nlc3NvclByb3BlcnR5RGVzY3Jp
cHRvck9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Jl
Z0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9wcm94eU9iamVjdFN0cnVjdHVyZTsKQEAgLTgxNyw2ICs4MTgsNyBAQCBwdWJsaWM6CiAgICAg
U3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlz
KTsgfQogICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBw
cm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHJldmlzaW9uIDI3MTc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgdm9pZCBSZWdFeHBG
dW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cAogICAgICAgICAgICAgZnB1dGMoJ2cnLCBtX2Zp
bGUpOwogICAgICAgICBpZiAocmVnRXhwLT5pZ25vcmVDYXNlKCkpCiAgICAgICAgICAgICBmcHV0
YygnaScsIG1fZmlsZSk7CisgICAgICAgIGlmIChyZWdFeHAtPmluZGljZXMoKSkKKyAgICAgICAg
ICAgIGZwdXRjKCdkJywgbV9maWxlKTsKICAgICAgICAgaWYgKHJlZ0V4cC0+bXVsdGlsaW5lKCkp
CiAgICAgICAgICAgICBmcHV0YygnbScsIG1fZmlsZSk7CiAgICAgICAgIGlmIChyZWdFeHAtPmRv
dEFsbCgpKQpAQCAtNDg4LDYgKzQ5MCw4IEBAIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cFRvU291cmNl
U3RyaW5nKGNvbnMKICAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICdnJzsKICAgICBpZiAocmVn
RXhwLT5pZ25vcmVDYXNlKCkpCiAgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7CisgICAg
aWYgKHJlZ0V4cC0+aW5kaWNlcygpKQorICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdkJzsKICAg
ICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkKICAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7
CiAgICAgaWYgKHJlZ0V4cC0+ZG90QWxsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjcxNzk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBz
dGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoWWFycjo6RmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9vbCBkb3RBbGwoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFlhcnI6OkZsYWdzOjpEb3RBbGwpOyB9CisgICAgYm9v
bCBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhZYXJyOjpGbGFnczo6
SW5kaWNlcyk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVyblN0cmluZzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDI3MTc5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg0LDE0ICs4NCwzMyBAQCBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmVJbXBsKFZNCiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlSW5kaWNlc1N0cnVjdHVyZUltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQoreworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQ7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Z3JvdXBzLCAwLCBvZmZzZXQpOworICAgIEFT
U0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNldCk7
CisgICAgcmV0dXJuIHN0cnVjdHVyZTsKK30KKwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5
V2l0aENvbnRpZ3VvdXMpOwogfQogCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRp
Y2VzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0
LCBBcnJheVdpdGhDb250aWd1b3VzKTsKK30KKwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRj
aGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKICAgICByZXR1cm4gY3JlYXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0
LCBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVS
ZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZUluZGljZXNTdHJ1Y3R1
cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAyNzE3OTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBQ
cm9wZXJ0eU9mZnNldCBSZWdFeHBNYXRjaGVzQXJyYXlJbmRleFByb3BlcnR5T2Zmc2V0ID0gMTAw
Owogc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0UHJv
cGVydHlPZmZzZXQgPSAxMDE7CiBzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0
Y2hlc0FycmF5R3JvdXBzUHJvcGVydHlPZmZzZXQgPSAxMDI7CitzdGF0aWMgY29uc3QgUHJvcGVy
dHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNldCA9IDEwMDsK
IAogQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0
Y2hlc0FycmF5KE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUmIHNjb3BlLCBHQ0RlZmVycmFsQ29u
dGV4dCogZGVmZXJyYWxDb250ZXh0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgaW5p
dGlhbExlbmd0aCkKIHsKQEAgLTc2LDE1ICs3NywxOSBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkq
IGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgcmVzdWx0LmVuZCA9IHN1YnBhdHRlcm5SZXN1bHRzWzFd
OwogICAgIAogICAgIEpTQXJyYXkqIGFycmF5OworICAgIEpTQXJyYXkqIGluZGljZXNBcnJheSA9
IG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgaGFuZGxlIGFycmF5IGFsbG9j
YXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTE0NAogICAgIAogICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5z
ID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOwogICAgIGJvb2wgaGFzTmFtZWRDYXB0dXJlcyA9
IHJlZ0V4cC0+aGFzTmFtZWRDYXB0dXJlcygpOworICAgIGJvb2wgY3JlYXRlSW5kaWNlcyA9IHJl
Z0V4cC0+aW5kaWNlcygpOwogICAgIEpTT2JqZWN0KiBncm91cHMgPSBoYXNOYW1lZENhcHR1cmVz
ID8gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9i
amVjdFN0cnVjdHVyZSgpKSA6IG51bGxwdHI7CiAgICAgU3RydWN0dXJlKiBtYXRjaFN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CiAKKyAgICBK
U09iamVjdCogaW5kaWNlc0dyb3VwcyA9IGNyZWF0ZUluZGljZXMgJiYgaGFzTmFtZWRDYXB0dXJl
cyA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVP
YmplY3RTdHJ1Y3R1cmUoKSkgOiBudWxscHRyOworCiAgICAgYXV0byBzZXRQcm9wZXJ0aWVzID0g
WyZdICgpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdCh2bSwgUmVnRXhwTWF0Y2hlc0FycmF5
SW5kZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CiAgICAgICAgIGFy
cmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0UHJvcGVydHlPZmZzZXQs
IGlucHV0KTsKQEAgLTk0LDEyICs5OSwzOSBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0
ZVJlZ0V4cE1hdGNoCiAgICAgICAgIGF1dG8gY2FwYWNpdHkgPSBtYXRjaFN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgYXV0byBzaXplID0gbWF0Y2hTdHJ1Y3R1cmUtPm91
dE9mTGluZVNpemUoKTsKICAgICAgICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0aWNfY2FzdDxKU1Zh
bHVlKj4oYXJyYXktPmJ1dHRlcmZseSgpLT5iYXNlKDAsIGNhcGFjaXR5KSksIChjYXBhY2l0eSAt
IHNpemUpICogc2l6ZW9mKEpTVmFsdWUpKTsKKworICAgICAgICBpZiAoY3JlYXRlSW5kaWNlcykg
eworICAgICAgICAgICAgU3RydWN0dXJlKiBpbmRpY2VzU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCk7CisKKyAgICAgICAgICAgIGFy
cmF5LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmluZGljZXMsIGluZGljZXNBcnJh
eSk7CisKKyAgICAgICAgICAgIGluZGljZXNBcnJheS0+cHV0RGlyZWN0KHZtLCBSZWdFeHBNYXRj
aGVzSW5kaWNlc0dyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBpbmRpY2VzR3JvdXBzKTsKKworICAgICAg
ICAgICAgQVNTRVJUKCFpbmRpY2VzQXJyYXktPmJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigp
LT5wcmVDYXBhY2l0eShpbmRpY2VzU3RydWN0dXJlKSk7CisgICAgICAgICAgICBhdXRvIGluZGlj
ZXNDYXBhY2l0eSA9IGluZGljZXNTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAg
ICAgICAgICBhdXRvIGluZGljZXNTaXplID0gaW5kaWNlc1N0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6
ZSgpOworICAgICAgICAgICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4o
aW5kaWNlc0FycmF5LT5idXR0ZXJmbHkoKS0+YmFzZSgwLCBpbmRpY2VzQ2FwYWNpdHkpKSwgKGlu
ZGljZXNDYXBhY2l0eSAtIGluZGljZXNTaXplKSAqIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgYXV0byBjcmVhdGVJbmRleEFycmF5ID0gWyZdIChHQ0RlZmVycmFs
Q29udGV4dCYgZGVmZXJyYWxDb250ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAg
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7CisKKyAgICAgICAgSlNBcnJheSog
cmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUs
ICZkZWZlcnJhbENvbnRleHQsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAyKTsKKyAgICAgICAg
cmVzdWx0LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNOdW1iZXIo
c3RhcnQpKTsKKyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihz
Y29wZSwgMSwganNOdW1iZXIoZW5kKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH07CiAKICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRU
aW1lKCkpKSB7CiAgICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5o
ZWFwKTsKLSAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAg
ICAgIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2Nv
cGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJwYXR0ZXJucyArIDEp
OworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIG1hdGNoZXNBcnJheVNjb3BlKHZt
KTsKKyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBpbmRpY2VzQXJyYXlTY29wZSh2
bSk7CisgICAgICAgIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3Ry
aWN0ZWQobWF0Y2hlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJl
LCBudW1TdWJwYXR0ZXJucyArIDEpOworCisgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAg
ICAgICAgICAgaW5kaWNlc0FycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJl
c3RyaWN0ZWQoaW5kaWNlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGdsb2JhbE9iamVj
dC0+cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSgpLCBudW1TdWJwYXR0ZXJucyAr
IDEpOwogCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0
IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKICAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBj
aGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwpAQCAtMTA5LDgg
KzE0MSw4IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKIAogICAg
ICAgICBzZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIAotICAgICAgICBhcnJheS0+aW5pdGlhbGl6
ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwg
JmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3Vs
dC5zdGFydCkpOwotICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhv
dXRCYXJyaWVyKG1hdGNoZXNBcnJheVNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0s
ICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1
bHQuc3RhcnQpKTsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBh
dHRlcm5zOyArK2kpIHsKICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpXTsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CkBAIC0xMTgsMTIgKzE1MCwyNyBA
QCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlu
cHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIHZh
bHVlKTsKKyAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllciht
YXRjaGVzQXJyYXlTY29wZSwgaSwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNy
ZWF0ZUluZGljZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gbnVt
U3VicGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRl
cm5SZXN1bHRzWzIgKiBpXTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBpbmRpY2VzQXJy
YXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNBcnJheVNjb3BlLCBpLCBj
cmVhdGVJbmRleEFycmF5KGRlZmVycmFsQ29udGV4dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpICsgMV0pKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGluZGljZXNBcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoaW5kaWNlc0FycmF5
U2NvcGUsIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZtLmhl
YXApOwotICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLSAgICAg
ICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHNjb3Bl
LCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMgKyAxKTsK
KyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBtYXRjaGVzQXJyYXlTY29wZSh2bSk7
CisgICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgaW5kaWNlc0FycmF5U2NvcGUodm0p
OworICAgICAgICBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJy
YXkobWF0Y2hlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJlLCBu
dW1TdWJwYXR0ZXJucyArIDEpOworCisgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAgICAg
ICAgICAgaW5kaWNlc0FycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNB
cnJheShpbmRpY2VzQXJyYXlTY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCksIG51bVN1YnBhdHRlcm5zICsgMSk7
CiAKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2Yg
bWVtb3J5IGVycm9yIGhlcmUsIGJ1dAogICAgICAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5n
ZSB3ZSBzaG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCkBAIC0xMzMsNyArMTgw
LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgICAgICAK
ICAgICAgICAgc2V0UHJvcGVydGllcygpOwogICAgICAgICAKLSAgICAgICAgYXJyYXktPmluaXRp
YWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQo
dm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSBy
ZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgYXJyYXktPmluaXRp
YWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKG1hdGNoZXNBcnJheVNjb3BlLCAwLCBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJl
c3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKICAgICAgICAg
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkg
ewogICAgICAgICAgICAgaW50IHN0YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwpAQCAt
MTQyLDcgKzE4OSwxOCBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNo
CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZl
cnJhbENvbnRleHQsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAt
IHN0YXJ0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7Ci0gICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJp
ZXIoc2NvcGUsIGksIHZhbHVlLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgICAgIGFy
cmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihtYXRjaGVzQXJyYXlTY29wZSwgaSwg
dmFsdWUsIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNy
ZWF0ZUluZGljZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gbnVt
U3VicGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRl
cm5SZXN1bHRzWzIgKiBpXTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBpbmRpY2VzQXJy
YXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNBcnJheVNjb3BlLCBpLCBj
cmVhdGVJbmRleEFycmF5KGRlZmVycmFsQ29udGV4dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpICsgMV0pKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGluZGljZXNBcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoaW5kaWNlc0FycmF5
U2NvcGUsIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCkBAIC0xNTMsOCArMjExLDExIEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVn
RXhwTWF0Y2gKICAgICBpZiAoaGFzTmFtZWRDYXB0dXJlcykgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBncm91cE5hbWUgPSByZWdFeHAtPmdldENhcHR1cmVHcm91cE5hbWUoaSk7Ci0gICAgICAgICAg
ICBpZiAoIWdyb3VwTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoIWdyb3VwTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBncm91cHMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgZ3JvdXBOYW1lKSwgYXJyYXktPmdldEluZGV4UXVpY2tseShp
KSk7CisgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZUluZGljZXMpCisgICAgICAgICAgICAgICAg
ICAgIGluZGljZXNHcm91cHMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgZ3JvdXBOYW1lKSwgaW5kaWNlc0FycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBhcnJheTsKQEAgLTE3Myw2ICsy
MzQsOCBAQCBpbmxpbmUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5CiB9CiBKU0Fy
cmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0dsb2JhbE9iamVjdCosIEpTU3Ry
aW5nKiwgUmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOworU3RydWN0dXJl
KiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQ
dXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjcxNzk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihyZWdFeHBQCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckRvdEFsbCk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlclN0aWNreSk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJJbmRpY2VzKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3Mp
OwogCkBAIC02Niw2ICs2Nyw3IEBAIHZvaWQgUmVnRXhwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+ZG90QWxsLCByZWdFeHBQcm90b0dldHRlckRvdEFsbCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBKU0NfTkFU
SVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2Fz
ZSwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgIEpTQ19OQVRJVkVfR0VUVEVS
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUsIHJlZ0V4cFBy
b3RvR2V0dGVyTXVsdGlsaW5lLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pbmRpY2VzLCByZWdFeHBQcm90b0dldHRlckluZGlj
ZXMsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvcik7CiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPnN0aWNreSwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3ksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAgICAgSlNDX05B
VElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnVuaWNvZGUs
IHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c291cmNlLCByZWdFeHBQcm90b0dldHRl
clNvdXJjZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkFjY2Vzc29yKTsKQEAgLTE3Niw2ICsxNzgsOCBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5n
IGZsYWdzU3RyaW5nKEpTCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RyaW5nKTsK
ICAgICBKU1ZhbHVlIG11bHRpbGluZVZhbHVlID0gcmVnZXhwLT5nZXQoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHN0cmluZyk7CisgICAgSlNWYWx1ZSBpbmRpY2VzVmFsdWUgPSByZWdleHAtPmdldChnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmluZGljZXMpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHN0cmluZyk7CiAgICAgSlNWYWx1ZSBkb3RBbGxWYWx1ZSA9IHJlZ2V4cC0+
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+ZG90QWxsKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBzdHJpbmcpOwogICAgIEpTVmFsdWUgdW5pY29kZVZhbHVlID0g
cmVnZXhwLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT51bmljb2RlKTsKQEAg
LTE4Niw2ICsxOTAsOCBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5nIGZsYWdzU3RyaW5nKEpT
CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGlmIChnbG9iYWxWYWx1ZS50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KSkKICAgICAgICAgc3RyaW5nW2luZGV4KytdID0gJ2cnOworICAgIGlmIChp
bmRpY2VzVmFsdWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCkpCisgICAgICAgIHN0cmluZ1tpbmRl
eCsrXSA9ICdkJzsKICAgICBpZiAoaWdub3JlQ2FzZVZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmpl
Y3QpKQogICAgICAgICBzdHJpbmdbaW5kZXgrK10gPSAnaSc7CiAgICAgaWYgKG11bHRpbGluZVZh
bHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQpAQCAtMzI3LDYgKzMzMywyMiBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckluZGljZXMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKKyAgICBhdXRvKiByZWdleHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0
aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgeworICAgICAgICBpZiAodGhp
c1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUu
aW5kaWNlcyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4
cC0+cmVnRXhwKCktPmluZGljZXMoKSkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVnRXhwUHJvdG9HZXR0ZXJGbGFncywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAJKHJldmlzaW9u
IDI3MTc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEyIEBAIE9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+
IHBhcnNlRmxhZ3MoU3QKICAgICBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzOwogICAgIGZvciAoYXV0
byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVVuaXRzKCkpIHsKICAgICAgICAgc3dpdGNoIChjaGFy
YWN0ZXIpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBpZiAoZmxhZ3MuY29udGFp
bnMoRmxhZ3M6OkluZGljZXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6OkluZGljZXMpOworICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBpZiAoZmxhZ3MuY29udGFpbnMo
RmxhZ3M6Okdsb2JhbCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCShyZXZpc2lvbiAyNzE3OTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsOCBAQCBlbnVtIGNsYXNzIEZsYWdzIDogdWludDhfdCB7CiAgICAgU3Rp
Y2t5ID0gMSA8PCAzLAogICAgIFVuaWNvZGUgPSAxIDw8IDQsCiAgICAgRG90QWxsID0gMSA8PCA1
LAotICAgIERlbGV0ZWRWYWx1ZSA9IDEgPDwgNgorICAgIEluZGljZXMgPSAxIDw8IDYsCisgICAg
RGVsZXRlZFZhbHVlID0gMSA8PCA3CiB9OwogCiBKU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxP
cHRpb25TZXQ8RmxhZ3M+PiBwYXJzZUZsYWdzKFN0cmluZ1ZpZXcpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHJldmlzaW9uIDI3MTc5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzEsNiArMzcxLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaWdub3Jl
Q2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Oklnbm9yZUNhc2Up
OyB9CiAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KEZsYWdzOjpNdWx0aWxpbmUpOyB9CisgICAgYm9vbCBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncy5jb250YWlucyhGbGFnczo6SW5kaWNlcyk7IH0KICAgICBib29sIHN0aWNreSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OlN0aWNreSk7IH0KICAgICBib29s
IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpVbmljb2Rl
KTsgfQogICAgIGJvb2wgZG90QWxsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhG
bGFnczo6RG90QWxsKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5oCShyZXZpc2lvbiAyNzE3OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNiArNTI0LDcgQEAgc3RydWN0IFlh
cnJQYXR0ZXJuIHsKICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoRmxhZ3M6Okdsb2JhbCk7IH0KICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpJZ25vcmVDYXNlKTsgfQogICAgIGJvb2wgbXVs
dGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6TXVsdGlsaW5l
KTsgfQorICAgIGJvb2wgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMo
RmxhZ3M6OkluZGljZXMpOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzLmNvbnRhaW5zKEZsYWdzOjpTdGlja3kpOyB9CiAgICAgYm9vbCB1bmljb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6VW5pY29kZSk7IH0KICAgICBib29sIGRv
dEFsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OkRvdEFsbCk7IH0K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3MTc5NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAxLTI1ICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0
Y2ggSW5kaWNlcyBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdleHAtbmFtZWQtY2Fw
dHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9PYmpl
Y3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzOgorCiAyMDIxLTAxLTI1ICBBbmRyZXMgR29uemFs
ZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQGFsdCBhbmQgYm91bmRz
IGlnbm9yZWQgd2hlbiB1c2luZyBpbWdbc3JjXSBwb2ludHMgdG8gYW4gaW5hY2Nlc3NpYmxlIFNW
RwpJbmRleDogTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcxNzk2KQorKysgTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhOdW1iZXIucHIK
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhEYXRlKSBpcyBbJ1VUQycsICdsZW5ndGgn
LCAnbmFtZScsICdub3cnLCAncGFyc2UnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhEYXRlLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICdnZXREYXRl
JywgJ2dldERheScsICdnZXRGdWxsWWVhcicsICdnZXRIb3VycycsICdnZXRNaWxsaXNlY29uZHMn
LCAnZ2V0TWludXRlcycsICdnZXRNb250aCcsICdnZXRTZWNvbmRzJywgJ2dldFRpbWUnLCAnZ2V0
VGltZXpvbmVPZmZzZXQnLCAnZ2V0VVRDRGF0ZScsICdnZXRVVENEYXknLCAnZ2V0VVRDRnVsbFll
YXInLCAnZ2V0VVRDSG91cnMnLCAnZ2V0VVRDTWlsbGlzZWNvbmRzJywgJ2dldFVUQ01pbnV0ZXMn
LCAnZ2V0VVRDTW9udGgnLCAnZ2V0VVRDU2Vjb25kcycsICdnZXRZZWFyJywgJ3NldERhdGUnLCAn
c2V0RnVsbFllYXInLCAnc2V0SG91cnMnLCAnc2V0TWlsbGlzZWNvbmRzJywgJ3NldE1pbnV0ZXMn
LCAnc2V0TW9udGgnLCAnc2V0U2Vjb25kcycsICdzZXRUaW1lJywgJ3NldFVUQ0RhdGUnLCAnc2V0
VVRDRnVsbFllYXInLCAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlzZWNvbmRzJywgJ3NldFVU
Q01pbnV0ZXMnLCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycsICdzZXRZZWFyJywgJ3Rv
RGF0ZVN0cmluZycsICd0b0dNVFN0cmluZycsICd0b0lTT1N0cmluZycsICd0b0pTT04nLCAndG9M
b2NhbGVEYXRlU3RyaW5nJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvTG9jYWxlVGltZVN0cmluZycs
ICd0b1N0cmluZycsICd0b1RpbWVTdHJpbmcnLCAndG9VVENTdHJpbmcnLCAndmFsdWVPZiddCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoUmVnRXhwKSBpcyBbJyQmJywgIiQnIiwgJyQq
JywgJyQrJywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2JywgJyQ3JywgJyQ4Jywg
JyQ5JywgJyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICdsYXN0UGFyZW4nLCAnbGVm
dENvbnRleHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3Byb3RvdHlwZScsICdy
aWdodENvbnRleHQnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90
b3R5cGUpIGlzIFsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdkb3RBbGwnLCAnZXhlYycsICdm
bGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3N0
aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXQorUEFTUyBnZXRTb3J0ZWRPd25Q
cm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGlsZScsICdjb25zdHJ1Y3Rv
cicsICdkb3RBbGwnLCAnZXhlYycsICdmbGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdp
bmRpY2VzJywgJ211bHRpbGluZScsICdzb3VyY2UnLCAnc3RpY2t5JywgJ3Rlc3QnLCAndG9TdHJp
bmcnLCAndW5pY29kZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IpIGlz
IFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3N0YWNrVHJhY2VMaW1pdCddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVj
dG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywn
UEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgn
LCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3No
JywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xv
ZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91bmQnLCdz
aWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXQpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzE3OTYpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFt
ZWQtY2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNCwyNCAr
MTQsMzQgQEAgUEFTUyBtYXRjaFJlc3VsdDFbMF0gaXMgIjAxLzAyLzIwMDEiCiBQQVNTIG1hdGNo
UmVzdWx0MS5ncm91cHMubW9udGggaXMgIjAxIgogUEFTUyBtYXRjaFJlc3VsdDEuZ3JvdXBzLmRh
eSBpcyAiMDIiCiBQQVNTIG1hdGNoUmVzdWx0MS5ncm91cHMueWVhciBpcyAiMjAwMSIKLVBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwi
MSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1dCIsImxlbmd0aCJdCitQQVNTIG1hdGNo
UmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5tb250aCBpcyBbMCwyXQorUEFTUyBtYXRjaFJlc3VsdDEu
aW5kaWNlcy5ncm91cHMuZGF5IGlzIFszLDVdCitQQVNTIG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdy
b3Vwcy55ZWFyIGlzIFs2LDEwXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRj
aFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlu
ZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG1hdGNoUmVzdWx0MS5ncm91cHMpLnNvcnQoKSBpcyBbImRheSIsIm1vbnRoIiwieWVhciJdCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vw
cykuc29ydCgpIGlzIFsiZGF5IiwibW9udGgiLCJ5ZWFyIl0KIFBBU1MgbWF0Y2hSZXN1bHQyYVsw
XSBpcyAiSm9obiBXLiBTbWl0aCIKIFBBU1MgbWF0Y2hSZXN1bHQyYVsxXSBpcyAiSm9obiIKIFBB
U1MgbWF0Y2hSZXN1bHQyYVsyXSBpcyAiVy4iCiBQQVNTIG1hdGNoUmVzdWx0MmFbM10gaXMgIlNt
aXRoIgorUEFTUyBtYXRjaFJlc3VsdDJhLmluZGljZXNbMV0gaXMgWzAsNF0KK1BBU1MgbWF0Y2hS
ZXN1bHQyYS5pbmRpY2VzWzJdIGlzIFs1LDddCitQQVNTIG1hdGNoUmVzdWx0MmEuaW5kaWNlc1sz
XSBpcyBbOCwxM10KIFBBU1MgbWF0Y2hSZXN1bHQyYVsxXSBpcyBtYXRjaFJlc3VsdDJhLmdyb3Vw
cy5maXJzdF9uYW1lCiBQQVNTIG1hdGNoUmVzdWx0MmFbMl0gaXMgbWF0Y2hSZXN1bHQyYS5ncm91
cHMubWlkZGxlX2luaXRpYWwKIFBBU1MgbWF0Y2hSZXN1bHQyYVszXSBpcyBtYXRjaFJlc3VsdDJh
Lmdyb3Vwcy5sYXN0X25hbWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hS
ZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1
dCIsImxlbmd0aCJdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0
MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIs
ImlucHV0IiwibGVuZ3RoIl0KIFBBU1MgbWF0Y2hSZXN1bHQyYlswXSBpcyAiU2FsbHkgQnJvd24i
CiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMgIlNhbGx5IgogUEFTUyBtYXRjaFJlc3VsdDJiWzJd
IGlzIHVuZGVmaW5lZC4KIFBBU1MgbWF0Y2hSZXN1bHQyYlszXSBpcyAiQnJvd24iCitQQVNTIG1h
dGNoUmVzdWx0MmIuaW5kaWNlc1sxXSBpcyBbMCw1XQorUEFTUyBtYXRjaFJlc3VsdDJiLmluZGlj
ZXNbMl0gaXMgdW5kZWZpbmVkLgorUEFTUyBtYXRjaFJlc3VsdDJiLmluZGljZXNbM10gaXMgWzYs
MTFdCiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMgbWF0Y2hSZXN1bHQyYi5ncm91cHMuZmlyc3Rf
bmFtZQogUEFTUyBtYXRjaFJlc3VsdDJiWzJdIGlzIG1hdGNoUmVzdWx0MmIuZ3JvdXBzLm1pZGRs
ZV9pbml0aWFsCiBQQVNTIG1hdGNoUmVzdWx0MmJbM10gaXMgbWF0Y2hSZXN1bHQyYi5ncm91cHMu
bGFzdF9uYW1lCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSku
c29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5n
dGgiXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQo
KSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIs
Imxlbmd0aCJdCiBQQVNTIHJlMy50b1N0cmluZygpIGlzICJcL14oPzxwYXJ0MT4uKik6KD88cGFy
dDI+LiopOlxcazxwYXJ0Mj46XFxrPHBhcnQxPiRcLyIKIFBBU1MgcmUzLnRlc3QoImE6YjpiOmEi
KSBpcyB0cnVlCiBQQVNTIHJlMy50ZXN0KCJhOmE6YTphIikgaXMgdHJ1ZQpJbmRleDogTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy5qcwkocmV2aXNpb24gMjcxNzk2KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHZhciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAgICAgIkRhdGUiOiAi
WydVVEMnLCAnbGVuZ3RoJywgJ25hbWUnLCAnbm93JywgJ3BhcnNlJywgJ3Byb3RvdHlwZSddIiwK
ICAgICAiRGF0ZS5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICdnZXREYXRlJywgJ2dldERh
eScsICdnZXRGdWxsWWVhcicsICdnZXRIb3VycycsICdnZXRNaWxsaXNlY29uZHMnLCAnZ2V0TWlu
dXRlcycsICdnZXRNb250aCcsICdnZXRTZWNvbmRzJywgJ2dldFRpbWUnLCAnZ2V0VGltZXpvbmVP
ZmZzZXQnLCAnZ2V0VVRDRGF0ZScsICdnZXRVVENEYXknLCAnZ2V0VVRDRnVsbFllYXInLCAnZ2V0
VVRDSG91cnMnLCAnZ2V0VVRDTWlsbGlzZWNvbmRzJywgJ2dldFVUQ01pbnV0ZXMnLCAnZ2V0VVRD
TW9udGgnLCAnZ2V0VVRDU2Vjb25kcycsICdnZXRZZWFyJywgJ3NldERhdGUnLCAnc2V0RnVsbFll
YXInLCAnc2V0SG91cnMnLCAnc2V0TWlsbGlzZWNvbmRzJywgJ3NldE1pbnV0ZXMnLCAnc2V0TW9u
dGgnLCAnc2V0U2Vjb25kcycsICdzZXRUaW1lJywgJ3NldFVUQ0RhdGUnLCAnc2V0VVRDRnVsbFll
YXInLCAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlzZWNvbmRzJywgJ3NldFVUQ01pbnV0ZXMn
LCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycsICdzZXRZZWFyJywgJ3RvRGF0ZVN0cmlu
ZycsICd0b0dNVFN0cmluZycsICd0b0lTT1N0cmluZycsICd0b0pTT04nLCAndG9Mb2NhbGVEYXRl
U3RyaW5nJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvTG9jYWxlVGltZVN0cmluZycsICd0b1N0cmlu
ZycsICd0b1RpbWVTdHJpbmcnLCAndG9VVENTdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiUmVn
RXhwIjogIlsnJCYnLCBcIiQnXCIsICckKicsICckKycsICckMScsICckMicsICckMycsICckNCcs
ICckNScsICckNicsICckNycsICckOCcsICckOScsICckXycsICckYCcsICdpbnB1dCcsICdsYXN0
TWF0Y2gnLCAnbGFzdFBhcmVuJywgJ2xlZnRDb250ZXh0JywgJ2xlbmd0aCcsICdtdWx0aWxpbmUn
LCAnbmFtZScsICdwcm90b3R5cGUnLCAncmlnaHRDb250ZXh0J10iLAotICAgICJSZWdFeHAucHJv
dG90eXBlIjogIlsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdkb3RBbGwnLCAnZXhlYycsICdm
bGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdtdWx0aWxpbmUnLCAnc291cmNlJywgJ3N0
aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXSIsCisgICAgIlJlZ0V4cC5wcm90
b3R5cGUiOiAiWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2RvdEFsbCcsICdleGVjJywgJ2Zs
YWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ2luZGljZXMnLCAnbXVsdGlsaW5lJywgJ3Nv
dXJjZScsICdzdGlja3knLCAndGVzdCcsICd0b1N0cmluZycsICd1bmljb2RlJ10iLAogICAgICJF
cnJvciI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzdGFja1RyYWNlTGltaXQn
XSIsCiAgICAgIkVycm9yLnByb3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAn
bmFtZScsICd0b1N0cmluZyddIiwKICAgICAiTWF0aCI6ICJbJ0UnLCdMTjEwJywnTE4yJywnTE9H
MTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcs
J2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHoz
MicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdp
bXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5k
b20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVu
YyddIiwKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtbmFtZWQtY2Fw
dHVyZS1ncm91cHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwkocmV2aXNpb24gMjcxNzk2KQorKysgTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTUsMjUgKzE1LDMyIEBAIHNob3VsZEJlKCdleGVjUmVzdWx0MS5n
cm91cHMueWVhcicsICciMjAKIHNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhl
eGVjUmVzdWx0MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4Iiwi
aW5wdXQiLCJsZW5ndGgiXScpOwogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGV4ZWNSZXN1bHQxLmdyb3Vwcykuc29ydCgpJywgJ1siZGF5IiwibW9udGgiLCJ5ZWFyIl0nKTsK
IAotdmFyIG1hdGNoUmVzdWx0MSA9IHNyYzEubWF0Y2gocmUxKTsKK3ZhciBtYXRjaFJlc3VsdDEg
PSBzcmMxLm1hdGNoKG5ldyBSZWdFeHAocmUxLCAnZCcpKTsKIHNob3VsZEJlKCdtYXRjaFJlc3Vs
dDFbMF0nLCAnIjAxLzAyLzIwMDEiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmdyb3Vwcy5t
b250aCcsICciMDEiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmdyb3Vwcy5kYXknLCAnIjAy
IicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MS5ncm91cHMueWVhcicsICciMjAwMSInKTsKLXNo
b3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScs
ICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsK
K3Nob3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMubW9udGgnLCAnWzAsMl0nKTsK
K3Nob3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMuZGF5JywgJ1szLDVdJyk7Citz
aG91bGRCZSgnbWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBzLnllYXInLCAnWzYsMTBdJyk7Citz
aG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkn
LCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwiaW5wdXQiLCJs
ZW5ndGgiXScpOwogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVz
dWx0MS5ncm91cHMpLnNvcnQoKScsICdbImRheSIsIm1vbnRoIiwieWVhciJdJyk7CitzaG91bGRC
ZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBz
KS5zb3J0KCknLCAnWyJkYXkiLCJtb250aCIsInllYXIiXScpOwogCi12YXIgcmUyID0gLyg/PGZp
cnN0X25hbWU+XHcrKVxzKD86KD88bWlkZGxlX2luaXRpYWw+XHdcLilccyk/KD88bGFzdF9uYW1l
Plx3KykvOwordmFyIHJlMiA9IC8oPzxmaXJzdF9uYW1lPlx3Kylccyg/Oig/PG1pZGRsZV9pbml0
aWFsPlx3XC4pXHMpPyg/PGxhc3RfbmFtZT5cdyspL2Q7CiB2YXIgbWF0Y2hSZXN1bHQyYSA9ICJK
b2huIFcuIFNtaXRoIi5tYXRjaChyZTIpOwogCiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYVswXScs
ICciSm9obiBXLiBTbWl0aCInKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzFdJywgJyJKb2hu
IicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMl0nLCAnIlcuIicpOwogc2hvdWxkQmUoJ21h
dGNoUmVzdWx0MmFbM10nLCAnIlNtaXRoIicpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmEuaW5k
aWNlc1sxXScsICdbMCw0XScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmEuaW5kaWNlc1syXScs
ICdbNSw3XScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmEuaW5kaWNlc1szXScsICdbOCwxM10n
KTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzFdJywgJ21hdGNoUmVzdWx0MmEuZ3JvdXBzLmZp
cnN0X25hbWUnKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzJdJywgJ21hdGNoUmVzdWx0MmEu
Z3JvdXBzLm1pZGRsZV9pbml0aWFsJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYVszXScsICdt
YXRjaFJlc3VsdDJhLmdyb3Vwcy5sYXN0X25hbWUnKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJn
cm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMi
LCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdJyk7CiAKIC8vIFZl
cmlmeSB0aGF0IG5hbWVkIGdyb3VwcyB0aGF0IGFyZW4ndCBtYXRjaGVkIGFyZSB1bmRlZmluZWQu
CiB2YXIgbWF0Y2hSZXN1bHQyYiA9ICJTYWxseSBCcm93biIubWF0Y2gocmUyKTsKQEAgLTQyLDEw
ICs0OSwxMyBAQCBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlswXScsICciU2FsbHkgQnJvCiBzaG91
bGRCZSgnbWF0Y2hSZXN1bHQyYlsxXScsICciU2FsbHkiJyk7CiBzaG91bGRCZVVuZGVmaW5lZCgn
bWF0Y2hSZXN1bHQyYlsyXScpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmJbM10nLCAnIkJyb3du
IicpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1sxXScsICdbMCw1XScpOworc2hv
dWxkQmVVbmRlZmluZWQoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1syXScpOworc2hvdWxkQmUoJ21h
dGNoUmVzdWx0MmIuaW5kaWNlc1szXScsICdbNiwxMV0nKTsKIHNob3VsZEJlKCdtYXRjaFJlc3Vs
dDJiWzFdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLmZpcnN0X25hbWUnKTsKIHNob3VsZEJlKCdt
YXRjaFJlc3VsdDJiWzJdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLm1pZGRsZV9pbml0aWFsJyk7
CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlszXScsICdtYXRjaFJlc3VsdDJiLmdyb3Vwcy5sYXN0
X25hbWUnKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3Vs
dDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0Iiwi
bGVuZ3RoIl0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJl
c3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGlj
ZXMiLCJpbnB1dCIsImxlbmd0aCJdJyk7CiAKIC8vIFZlcmlmeSB0aGF0IG5hbWVkIGJhY2tyZWZl
cmVuY2VzIHdvcmsuCiB2YXIgcmUzID0gL14oPzxwYXJ0MT4uKik6KD88cGFydDI+LiopOlxrPHBh
cnQyPjpcazxwYXJ0MT4kLzsK
</data>
<flag name="commit-queue"
          id="436235"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420713</attachid>
            <date>2021-02-17 14:21:18 -0800</date>
            <delta_ts>2021-02-18 10:35:08 -0800</delta_ts>
            <desc>Updated patch with &apos;d&apos; flag and recommended fixes</desc>
            <filename>202475-2.patch</filename>
            <type>text/plain</type>
            <size>43587</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzMwMzApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNf
UmVnRXhwLnByb3RvdHlwZS5mbGFncy5qczoKKyAgICAgICAgKiBzdHJlc3Mvc3RhdGljLWdldHRl
ci1pbi1uYW1lcy5qczoKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAy
LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+IGFuZCBTZXJnZXkgUnViYW5v
diA8Y2hpMTg3QGdtYWlsLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogaW1wbGVtZW50IG5v
bi10cmFwcGluZyBmbG9hdCB0byBpbnQgY29udmVyc2lvbgpJbmRleDogSlNUZXN0cy9lczYvUHJv
eHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5cGUuZmxhZ3MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9lczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MuanMJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvZXM2L1Byb3h5X2ludGVy
bmFsX2dldF9jYWxsc19SZWdFeHAucHJvdG90eXBlLmZsYWdzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogdmFyIGdldCA9IFtdOwogdmFyIHAgPSBu
ZXcgUHJveHkoe30sIHsgZ2V0OiBmdW5jdGlvbihvLCBrKSB7IGdldC5wdXNoKGspOyByZXR1cm4g
b1trXTsgfX0pOwogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90
eXBlLCAnZmxhZ3MnKS5nZXQuY2FsbChwKTsKLXJldHVybiBnZXQgKyAnJyA9PT0gImdsb2JhbCxp
Z25vcmVDYXNlLG11bHRpbGluZSxkb3RBbGwsdW5pY29kZSxzdGlja3kiOworcmV0dXJuIGdldCAr
ICcnID09PSAiaGFzSW5kaWNlcyxnbG9iYWwsaWdub3JlQ2FzZSxtdWx0aWxpbmUsZG90QWxsLHVu
aWNvZGUsc3RpY2t5IjsKICAgICAgIAogfQogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdGF0aWMt
Z2V0dGVyLWluLW5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3N0YXRpYy1n
ZXR0ZXItaW4tbmFtZXMuanMJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvc3RyZXNzL3N0
YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsNSArMyw1IEBAIGZ1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwogfQogCi1zaG91bGRCZShKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkpLCAn
WyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJkb3RBbGwiLCJleGVjIiwiZmxhZ3MiLCJnbG9iYWwi
LCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwic291cmNlIiwic3RpY2t5IiwidGVzdCIsInRvU3Ry
aW5nIiwidW5pY29kZSJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkpLCAnWyJjb21waWxlIiwiY29u
c3RydWN0b3IiLCJkb3RBbGwiLCJleGVjIiwiZmxhZ3MiLCJnbG9iYWwiLCJoYXNJbmRpY2VzIiwi
aWdub3JlQ2FzZSIsIm11bHRpbGluZSIsInNvdXJjZSIsInN0aWNreSIsInRlc3QiLCJ0b1N0cmlu
ZyIsInVuaWNvZGUiXScpOwogc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMoL0NvY29hLykuc29ydCgpKSwgJ1sibGFzdEluZGV4Il0nKTsKSW5kZXg6IEpT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQCBza2lwOgogICAgIC0gY2xlYW51
cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKLSAgICAtIHJlZ2V4cC1tYXRjaC1pbmRpY2VzCiAg
ICAgLSB0b3AtbGV2ZWwtYXdhaXQKICAgcGF0aHM6CiAgIGZpbGVzOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDItMTcgIE1p
Y2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVt
ZW50IFJlZ0V4cCBNYXRjaCBJbmRpY2VzIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIGxhdGVzdCB2ZXJz
aW9uIG9mIHRoZSBSZWdFeHAgbWF0Y2ggaW5kaWNlcyBwcm9wb3NhbCAoaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtcmVnZXhwLW1hdGNoLWluZGljZXMpLgorICAgICAgICBJdCBpbmNs
dWRlcyBhIG5ldyAnZCcgZmxhZyB0byBSZWdFeHAncyB0byB0cmlnZ2VyIHRoZSBwb3B1bGF0aW9u
IG9mIHRoZSAnaW5kaWNlcycgcHJvcGVydHkgdHJlZSBpbiBhIE1hdGNoZXMgcmVzdWx0IGZyb20K
KyAgICAgICAgUmVnRXhwLmV4ZWMoKSBhbmQgcmVsYXRlZCBtZXRob2RzLiAgVGhpcyBjaGFuZ2Ug
aXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBKZXRTdHJlYW0yLgorCisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpmaXJlV2F0Y2hwb2ludEFuZE1ha2VBbGxBcnJheVN0cnVjdHVyZXNT
bG93UHV0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwRnVuY3Rpb25h
bFRlc3RDb2xsZWN0b3I6Om91dHB1dE9uZVRlc3QpOgorICAgICAgICAoSlNDOjpyZWdleHBUb1Nv
dXJjZVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUluZGljZXNT
dHJ1Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0luZGljZXNB
cnJheVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2Vz
QXJyYXlTbG93UHV0U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmZsYWdzU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB5YXJyL1lh
cnJGbGFncy5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OnBhcnNlRmxhZ3MpOgorICAgICAgICAq
IHlhcnIvWWFyckZsYWdzLmg6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuOjpoYXNJbmRpY2VzIGNvbnN0KToKKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuOjpoYXNJbmRpY2VzIGNvbnN0KToKKwogMjAyMS0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSB1bm5lY2Vzc2FyeSBoYWNr
IGZvciBpT1M3CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzMwMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
CiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
Q2FjaGUuaCIKQEAgLTI2MDcsOCArMjYwOCwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihtX3ZtLCBnbG9iYWxPYmplY3RW
YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFk
VGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRM
YXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSBudWxscHRyOworICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCA9IHJlZ0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0
Kj4obV92bSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4
cE9iamVjdC0+cmVnRXhwKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
cmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdE5vZGUtPmNhc3RPcGVyYW5kPFJlZ0V4
cCo+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3kpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZWdFeHAgPSBub2RlLT5jYXN0T3BlcmFuZDxSZWdFeHAqPigp
OworICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQgc3RydWN0dXJlU2V0OwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiByZWdF
eHAgaXMgdW5rbm93biwgd2UgbmVlZCB0byBwdXQgYm90aCByZWdFeHAgTWF0Y2hlc0FycmF5IHN0
cnVjdHVyZSB2YXJpYW50cyBpbiBvdXIgc2V0LgorICAgICAgICAgICAgICAgICAgICBpZiAoIXJl
Z0V4cCB8fCAhcmVnRXhwLT5oYXNJbmRpY2VzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IXJlZ0V4cCB8fCByZWdFeHAtPmhhc0luZGljZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdHVyZVNldC5hZGQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZVNldCk7CiAgICAgICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkubWVyZ2UoU3BlY090aGVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5NSwxMiArNTk1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoKG1f
bm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjIHx8IG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjTm9u
R2xvYmFsT3JTdGlja3kpICYmIHJlZ0V4cC0+aGFzTmFtZWRDYXB0dXJlcygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2NDY0Ci0gICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudCBzdHJlbmd0aCBy
ZWR1Y3Rpb24gb3B0aW1pemF0aW9uIGZvciBuYW1lZCBjYXB0dXJlIGdyb3Vwcy4KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHaXZpbmcgdXAgYmVjYXVzZSBvZiBuYW1lZCBjYXB0dXJlIGdyb3Vwcy5cbiIpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKChtX25vZGUt
Pm9wKCkgPT0gUmVnRXhwRXhlYyB8fCBtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlY05vbkdsb2Jh
bE9yU3RpY2t5KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVnRXhwLT5oYXNOYW1lZENh
cHR1cmVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDY0CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbXBsZW1lbnQgc3RyZW5ndGggcmVkdWN0aW9uIG9wdGltaXphdGlvbiBmb3IgbmFt
ZWQgY2FwdHVyZSBncm91cHMuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBv
ZiBuYW1lZCBjYXB0dXJlIGdyb3Vwcy5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJlZ0V4cC0+aGFzSW5kaWNlcygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkzMAorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50IHN0cmVuZ3RoIHJlZHVjdGlvbiBvcHRp
bWl6YXRpb24gZm9yIFJlZ0V4cCB3aXRoIG1hdGNoIGluZGljZXMuCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHaXZpbmcgdXAgYmVjYXVzZSBvZiBtYXRjaCBpbmRpY2VzLlxuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6
aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShy
ZXZpc2lvbiAyNzMwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAKICAgICBtYWNy
byhncmFudWxhcml0eSkgXAogICAgIG1hY3JvKGdyb3VwcykgXAogICAgIG1hY3JvKGhhcykgXAor
ICAgIG1hY3JvKGhhc0luZGljZXMpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eSkgXAogICAg
IG1hY3JvKGhhc2gpIFwKICAgICBtYWNybyhoZWFkZXIpIFwKQEAgLTEzOCw2ICsxMzksNyBAQAog
ICAgIG1hY3JvKGlnbm9yZUNhc2UpIFwKICAgICBtYWNybyhpZ25vcmVQdW5jdHVhdGlvbikgXAog
ICAgIG1hY3JvKGluZGV4KSBcCisgICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGluZmVy
cmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25Db3Vu
dCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsNiArODA0LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90b3R5
cGUuc2V0KHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhw
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIG1fcmVnRXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNJ
bmRpY2VzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzSW5k
aWNlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVj
dHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+
JiBpbml0KSB7CkBAIC0xNzQ4LDYgKzE3NDksOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaXJl
V2F0Y2hwb2ludEFuZE1hCiAgICAgU3RydWN0dXJlKiBzbG93UHV0U3RydWN0dXJlOwogICAgIHNs
b3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
KHZtLCB0aGlzKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdF
eHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcyk7CisgICAgbV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJl
KTsKICAgICBzbG93UHV0U3RydWN0dXJlID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93UHV0
U3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzbG93UHV0U3RydWN0dXJlKTsKIApA
QCAtMjAyNSw2ICsyMDI4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbAogICAgIHRoaXNPYmplY3QtPm1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVydHlE
ZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw2ICs0MTcs
NyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRv
ck9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0
cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9w
cm94eU9iamVjdFN0cnVjdHVyZTsKQEAgLTgyNiw2ICs4MjcsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94
eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAJKHJldmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgdm9pZCBSZWdFeHBGdW5j
dGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cAogICAgICAgICAgICAgZnB1dGMoJ2cnLCBtX2ZpbGUp
OwogICAgICAgICBpZiAocmVnRXhwLT5pZ25vcmVDYXNlKCkpCiAgICAgICAgICAgICBmcHV0Yygn
aScsIG1fZmlsZSk7CisgICAgICAgIGlmIChyZWdFeHAtPmhhc0luZGljZXMoKSkKKyAgICAgICAg
ICAgIGZwdXRjKCdkJywgbV9maWxlKTsKICAgICAgICAgaWYgKHJlZ0V4cC0+bXVsdGlsaW5lKCkp
CiAgICAgICAgICAgICBmcHV0YygnbScsIG1fZmlsZSk7CiAgICAgICAgIGlmIChyZWdFeHAtPmRv
dEFsbCgpKQpAQCAtNDg4LDYgKzQ5MCw4IEBAIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cFRvU291cmNl
U3RyaW5nKGNvbnMKICAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICdnJzsKICAgICBpZiAocmVn
RXhwLT5pZ25vcmVDYXNlKCkpCiAgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7CisgICAg
aWYgKHJlZ0V4cC0+aGFzSW5kaWNlcygpKQorICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdkJzsK
ICAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkKICAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAn
bSc7CiAgICAgaWYgKHJlZ0V4cC0+ZG90QWxsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8
fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mu
Y29udGFpbnMoWWFycjo6RmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9vbCBkb3RBbGwoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFlhcnI6OkZsYWdzOjpEb3RBbGwpOyB9CisgICAg
Ym9vbCBoYXNJbmRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhZYXJyOjpG
bGFnczo6SGFzSW5kaWNlcyk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDI3
MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJh
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDE0ICs4NCwzMyBAQCBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKFZNCiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlSW5kaWNlc1N0cnVjdHVyZUltcGwoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQoreworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Z3JvdXBzLCAwLCBvZmZzZXQp
OworICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0
eU9mZnNldCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZTsKK30KKwogU3RydWN0dXJlKiBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewogICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmpl
Y3QsIEFycmF5V2l0aENvbnRpZ3VvdXMpOwogfQogCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1h
dGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVJbmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xv
YmFsT2JqZWN0LCBBcnJheVdpdGhDb250aWd1b3VzKTsKK30KKwogU3RydWN0dXJlKiBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gY3JlYXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xv
YmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKTsKIH0KIAorU3RydWN0dXJl
KiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZUluZGlj
ZXNTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAyNzMw
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRp
YyBjb25zdCBQcm9wZXJ0eU9mZnNldCBSZWdFeHBNYXRjaGVzQXJyYXlJbmRleFByb3BlcnR5T2Zm
c2V0ID0gMTAwOwogc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IFJlZ0V4cE1hdGNoZXNBcnJh
eUlucHV0UHJvcGVydHlPZmZzZXQgPSAxMDE7CiBzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQg
UmVnRXhwTWF0Y2hlc0FycmF5R3JvdXBzUHJvcGVydHlPZmZzZXQgPSAxMDI7CitzdGF0aWMgY29u
c3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNl
dCA9IDEwMDsKIAogQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVk
UmVnRXhwTWF0Y2hlc0FycmF5KE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUmIHNjb3BlLCBHQ0Rl
ZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgaW5pdGlhbExlbmd0aCkKIHsKQEAgLTc2LDE1ICs3NywxOSBAQCBBTFdBWVNfSU5MSU5F
IEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgcmVzdWx0LmVuZCA9IHN1YnBhdHRlcm5S
ZXN1bHRzWzFdOwogICAgIAogICAgIEpTQXJyYXkqIGFycmF5OworICAgIEpTQXJyYXkqIGluZGlj
ZXNBcnJheSA9IG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgaGFuZGxlIGFy
cmF5IGFsbG9jYXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NAogICAgIAogICAgIHVuc2lnbmVkIG51bVN1
YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOwogICAgIGJvb2wgaGFzTmFtZWRD
YXB0dXJlcyA9IHJlZ0V4cC0+aGFzTmFtZWRDYXB0dXJlcygpOworICAgIGJvb2wgY3JlYXRlSW5k
aWNlcyA9IHJlZ0V4cC0+aGFzSW5kaWNlcygpOwogICAgIEpTT2JqZWN0KiBncm91cHMgPSBoYXNO
YW1lZENhcHR1cmVzID8gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVs
bFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKSA6IG51bGxwdHI7CiAgICAgU3RydWN0dXJlKiBt
YXRjaFN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCk7CiAKKyAgICBKU09iamVjdCogaW5kaWNlc0dyb3VwcyA9IGNyZWF0ZUluZGljZXMgJiYgaGFz
TmFtZWRDYXB0dXJlcyA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51
bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSkgOiBudWxscHRyOworCiAgICAgYXV0byBzZXRQ
cm9wZXJ0aWVzID0gWyZdICgpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdCh2bSwgUmVnRXhw
TWF0Y2hlc0FycmF5SW5kZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7
CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIFJlZ0V4cE1hdGNoZXNBcnJheUlucHV0UHJv
cGVydHlPZmZzZXQsIGlucHV0KTsKQEAgLTk0LDEyICs5OSwzNyBAQCBBTFdBWVNfSU5MSU5FIEpT
QXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgICAgIGF1dG8gY2FwYWNpdHkgPSBtYXRjaFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgYXV0byBzaXplID0gbWF0Y2hT
dHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKTsKICAgICAgICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0
aWNfY2FzdDxKU1ZhbHVlKj4oYXJyYXktPmJ1dHRlcmZseSgpLT5iYXNlKDAsIGNhcGFjaXR5KSks
IChjYXBhY2l0eSAtIHNpemUpICogc2l6ZW9mKEpTVmFsdWUpKTsKKworICAgICAgICBpZiAoY3Jl
YXRlSW5kaWNlcykgeworICAgICAgICAgICAgU3RydWN0dXJlKiBpbmRpY2VzU3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCk7CisKKyAg
ICAgICAgICAgIGluZGljZXNBcnJheS0+cHV0RGlyZWN0KHZtLCBSZWdFeHBNYXRjaGVzSW5kaWNl
c0dyb3Vwc1Byb3BlcnR5T2Zmc2V0LCBpbmRpY2VzR3JvdXBzKTsKKworICAgICAgICAgICAgQVNT
RVJUKCFpbmRpY2VzQXJyYXktPmJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBh
Y2l0eShpbmRpY2VzU3RydWN0dXJlKSk7CisgICAgICAgICAgICBhdXRvIGluZGljZXNDYXBhY2l0
eSA9IGluZGljZXNTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBh
dXRvIGluZGljZXNTaXplID0gaW5kaWNlc1N0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOworICAg
ICAgICAgICAgZ2NTYWZlWmVyb01lbW9yeShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oaW5kaWNlc0Fy
cmF5LT5idXR0ZXJmbHkoKS0+YmFzZSgwLCBpbmRpY2VzQ2FwYWNpdHkpKSwgKGluZGljZXNDYXBh
Y2l0eSAtIGluZGljZXNTaXplKSAqIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgYXV0byBjcmVhdGVJbmRleEFycmF5ID0gWyZdIChHQ0RlZmVycmFsQ29udGV4dCYg
ZGVmZXJyYWxDb250ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7CisKKyAgICAgICAgSlNBcnJheSogcmVzdWx0ID0g
SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsICZkZWZlcnJh
bENvbnRleHQsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAyKTsKKyAgICAgICAgcmVzdWx0LT5p
bml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNOdW1iZXIoc3RhcnQpKTsK
KyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMSwg
anNOdW1iZXIoZW5kKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH07
CiAKICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7
CiAgICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKLSAg
ICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAgICAgIGFycmF5
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsICZkZWZl
cnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJwYXR0ZXJucyArIDEpOworICAgICAg
ICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIG1hdGNoZXNBcnJheVNjb3BlKHZtKTsKKyAgICAg
ICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBpbmRpY2VzQXJyYXlTY29wZSh2bSk7CisgICAg
ICAgIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQobWF0
Y2hlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJw
YXR0ZXJucyArIDEpOworCisgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAgICAgICAgICAg
aW5kaWNlc0FycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQo
aW5kaWNlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGdsb2JhbE9iamVjdC0+cmVnRXhw
TWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSgpLCBudW1TdWJwYXR0ZXJucyArIDEpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0IG9mIG1lbW9y
eSBlcnJvciBoZXJlLCBidXQKICAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ug
c2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwpAQCAtMTA5LDggKzEzOSw4IEBA
IEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKIAogICAgICAgICBzZXRQ
cm9wZXJ0aWVzKCk7CiAgICAgICAgIAotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0
aG91dEJhcnJpZXIoc2NvcGUsIDAsIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgJmRlZmVycmFs
Q29udGV4dCwgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCkp
OwotICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVy
KG1hdGNoZXNBcnJheVNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZlcnJh
bENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQp
KTsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyAr
K2kpIHsKICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpXTsK
ICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CkBAIC0xMTgsMTIgKzE0OCwyNyBAQCBBTFdBWVNf
SU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgICAgICAgICAgICAgdmFsdWUg
PSBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCBzdGFy
dCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBh
cnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIHZhbHVlKTsKKyAg
ICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihtYXRjaGVzQXJy
YXlTY29wZSwgaSwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNyZWF0ZUluZGlj
ZXMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gbnVtU3VicGF0dGVy
bnM7ICsraSkgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpXTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICAgICAgICAg
IGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBpbmRpY2VzQXJyYXktPmluaXRp
YWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNBcnJheVNjb3BlLCBpLCBjcmVhdGVJbmRl
eEFycmF5KGRlZmVycmFsQ29udGV4dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsg
MV0pKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluZGljZXNB
cnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoaW5kaWNlc0FycmF5U2NvcGUsIGks
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXApOwotICAg
ICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLSAgICAgICAgYXJyYXkg
PSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHNjb3BlLCAmZGVmZXJy
YWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMgKyAxKTsKKyAgICAgICAg
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBtYXRjaGVzQXJyYXlTY29wZSh2bSk7CisgICAgICAg
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgaW5kaWNlc0FycmF5U2NvcGUodm0pOworICAgICAg
ICBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkobWF0Y2hl
c0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJwYXR0
ZXJucyArIDEpOworCisgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAgICAgICAgICAgaW5k
aWNlc0FycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheShpbmRp
Y2VzQXJyYXlTY29wZSwgJmRlZmVycmFsQ29udGV4dCwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRj
aGVzSW5kaWNlc0FycmF5U3RydWN0dXJlKCksIG51bVN1YnBhdHRlcm5zICsgMSk7CiAKICAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVy
cm9yIGhlcmUsIGJ1dAogICAgICAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91
bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCkBAIC0xMzMsNyArMTc4LDcgQEAgQUxX
QVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgICAgICAKICAgICAgICAg
c2V0UHJvcGVydGllcygpOwogICAgICAgICAKLSAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRl
eFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sICZkZWZl
cnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3Rh
cnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRl
eFdpdGhvdXRCYXJyaWVyKG1hdGNoZXNBcnJheVNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVzb2x2
ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQg
LSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgewogICAgICAg
ICAgICAgaW50IHN0YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwpAQCAtMTQyLDIxICsx
ODcsMzkgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgICAg
ICAgICAgICAgIHZhbHVlID0ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAmZGVmZXJyYWxDb250
ZXh0LCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0gLSBzdGFydCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwotICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3Bl
LCBpLCB2YWx1ZSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgICAgICBhcnJheS0+aW5p
dGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIobWF0Y2hlc0FycmF5U2NvcGUsIGksIHZhbHVlLCBB
cnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjcmVhdGVJbmRp
Y2VzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IG51bVN1YnBhdHRl
cm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0
c1syICogaV07CisgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0
aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihpbmRpY2VzQXJyYXlTY29wZSwgaSwgY3JlYXRlSW5k
ZXhBcnJheShkZWZlcnJhbENvbnRleHQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSAr
IDFdKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpbmRpY2Vz
QXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGluZGljZXNBcnJheVNjb3BlLCBp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIE5vdyB0aGUgb2JqZWN0IGlzIHNhZmUgdG8gc2NhbiBieSBHQy4KIAotICAgIC8vIFdlIGlu
aXRpYWxpemUgdGhlIGdyb3VwcyBvYmplY3QgbGF0ZSBhcyBpdCBjb3VsZCBhbGxvY2F0ZSwgd2hp
Y2ggd2l0aCB0aGUgY3VycmVudCBBUEkgY291bGQgY2F1c2UKKyAgICAvLyBXZSBpbml0aWFsaXpl
IHRoZSBncm91cHMgYW5kIGluZGljZXMgb2JqZWN0cyBsYXRlIGFzIHRoZXkgY291bGQgYWxsb2Nh
dGUsIHdoaWNoIHdpdGggdGhlIGN1cnJlbnQgQVBJIGNvdWxkIGNhdXNlCiAgICAgLy8gYWxsb2Nh
dGlvbnMuCiAgICAgaWYgKGhhc05hbWVkQ2FwdHVyZXMpIHsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcg
Z3JvdXBOYW1lID0gcmVnRXhwLT5nZXRDYXB0dXJlR3JvdXBOYW1lKGkpOwotICAgICAgICAgICAg
aWYgKCFncm91cE5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKCFncm91cE5hbWUuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgZ3JvdXBzLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIGdyb3VwTmFtZSksIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSkp
OworICAgICAgICAgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAgICAgICAgICAgICAgICAg
ICBpbmRpY2VzR3JvdXBzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IGdyb3VwTmFtZSksIGluZGljZXNBcnJheS0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChjcmVhdGVJbmRpY2VzKQorICAgICAg
ICBhcnJheS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRpY2VzLCBpbmRpY2Vz
QXJyYXkpOworCiAgICAgcmV0dXJuIGFycmF5OwogfQogCkBAIC0xNzMsNiArMjM2LDggQEAgaW5s
aW5lIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheQogfQogSlNBcnJheSogY3JlYXRl
RW1wdHlSZWdFeHBNYXRjaGVzQXJyYXkoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4
cCopOwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCopOworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzSW5kaWNlc0Fy
cmF5U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK1N0cnVjdHVyZSogY3JlYXRlUmVn
RXhwTWF0Y2hlc0luZGljZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCopOwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04ocmVnRXhwUAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04ocmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckdsb2JhbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckhhc0luZGljZXMpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRG90QWxs
KTsKQEAgLTY0LDYgKzY1LDcgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nLCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOwogICAgIEpTQ19OQVRJ
VkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5nbG9iYWwsIHJl
Z0V4cFByb3RvR2V0dGVyR2xvYmFsLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5kb3RBbGwsIHJlZ0V4cFByb3RvR2V0dGVyRG90
QWxsLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5oYXNJbmRpY2VzLCByZWdFeHBQcm90b0dldHRlckhhc0luZGljZXMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAg
ICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pmlnbm9yZUNhc2UsIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBKU0NfTkFU
SVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+bXVsdGlsaW5l
LCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c3RpY2t5LCByZWdFeHBQcm90b0dl
dHRlclN0aWNreSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yKTsKQEAgLTE3MCw2ICsxNzIsOCBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3Ry
aW5nIGZsYWdzU3RyaW5nKEpTCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIEpTVmFsdWUgaW5k
aWNlc1ZhbHVlID0gcmVnZXhwLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5o
YXNJbmRpY2VzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzdHJpbmcpOwogICAg
IEpTVmFsdWUgZ2xvYmFsVmFsdWUgPSByZWdleHAtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmdsb2JhbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RyaW5n
KTsKICAgICBKU1ZhbHVlIGlnbm9yZUNhc2VWYWx1ZSA9IHJlZ2V4cC0+Z2V0KGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSk7CkBAIC0xODQsNiArMTg4LDggQEAgc3Rh
dGljIGlubGluZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhKUwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHN0cmluZyk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgaWYg
KGluZGljZXNWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgc3RyaW5nW2lu
ZGV4KytdID0gJ2QnOwogICAgIGlmIChnbG9iYWxWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KSkKICAgICAgICAgc3RyaW5nW2luZGV4KytdID0gJ2cnOwogICAgIGlmIChpZ25vcmVDYXNlVmFs
dWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCkpCkBAIC0yNDcsNiArMjUzLDIyIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT5nbG9iYWwoKSkpOwogfQogCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJIYXNJbmRpY2VzLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CisgICAgYXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwg
dGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKKyAgICAgICAgaWYgKHRo
aXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBl
Lmhhc0luZGljZXMgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3Qi
X3MpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4
cC0+cmVnRXhwKCktPmhhc0luZGljZXMoKSkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ocmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAko
cmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTIgQEAgT3B0aW9uYWw8T3B0aW9uU2V0
PEZsYWdzPj4gcGFyc2VGbGFncyhTdAogICAgIE9wdGlvblNldDxGbGFncz4gZmxhZ3M7CiAgICAg
Zm9yIChhdXRvIGNoYXJhY3RlciA6IHN0cmluZy5jb2RlVW5pdHMoKSkgewogICAgICAgICBzd2l0
Y2ggKGNoYXJhY3RlcikgeworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGlmIChmbGFn
cy5jb250YWlucyhGbGFnczo6SGFzSW5kaWNlcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6SGFzSW5kaWNlcyk7Cisg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGlmIChm
bGFncy5jb250YWlucyhGbGFnczo6R2xvYmFsKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmgJKHJl
dmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4IEBAIGVudW0gY2xhc3MgRmxhZ3MgOiB1aW50
OF90IHsKICAgICBTdGlja3kgPSAxIDw8IDMsCiAgICAgVW5pY29kZSA9IDEgPDwgNCwKICAgICBE
b3RBbGwgPSAxIDw8IDUsCi0gICAgRGVsZXRlZFZhbHVlID0gMSA8PCA2CisgICAgSGFzSW5kaWNl
cyA9IDEgPDwgNiwKKyAgICBEZWxldGVkVmFsdWUgPSAxIDw8IDcKIH07CiAKIEpTX0VYUE9SVF9Q
UklWQVRFIE9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2ICszNzEsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhG
bGFnczo6SWdub3JlQ2FzZSk7IH0KICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Ok11bHRpbGluZSk7IH0KKyAgICBib29sIGhhc0luZGlj
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpIYXNJbmRpY2VzKTsg
fQogICAgIGJvb2wgc3RpY2t5KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFn
czo6U3RpY2t5KTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mu
Y29udGFpbnMoRmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9vbCBkb3RBbGwoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpEb3RBbGwpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlzaW9uIDI3MzAzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
NCw2ICs1MjQsNyBAQCBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIGJvb2wgZ2xvYmFsKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6R2xvYmFsKTsgfQogICAgIGJvb2wg
aWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Oklnbm9y
ZUNhc2UpOyB9CiAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNv
bnRhaW5zKEZsYWdzOjpNdWx0aWxpbmUpOyB9CisgICAgYm9vbCBoYXNJbmRpY2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6SGFzSW5kaWNlcyk7IH0KICAgICBib29s
IHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OlN0aWNreSk7
IH0KICAgICBib29sIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZs
YWdzOjpVbmljb2RlKTsgfQogICAgIGJvb2wgZG90QWxsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cy5jb250YWlucyhGbGFnczo6RG90QWxsKTsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjczMDMwKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMDItMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gSW1wbGVtZW50IFJlZ0V4cCBNYXRjaCBJbmRpY2VzIHByb3Bvc2FsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRlc3RzLgor
CisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGpzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMuanM6
CisKIDIwMjEtMDItMTcgIENocmlzIEdhbWJyZWxsICA8Y2dhbWJyZWxsQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTGF5b3V0VGVzdHNdIENvbnZlcnQgaHR0cC90ZXN0cy9wcmVjb25uZWN0IGNvbnZl
cnQgUEhQIHRvIFB5dGhvbgpJbmRleDogTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjczMDMwKQorKysg
TGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhOdW1iZXIucHIKIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhEYXRlKSBpcyBb
J1VUQycsICdsZW5ndGgnLCAnbmFtZScsICdub3cnLCAncGFyc2UnLCAncHJvdG90eXBlJ10KIFBB
U1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhEYXRlLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1
Y3RvcicsICdnZXREYXRlJywgJ2dldERheScsICdnZXRGdWxsWWVhcicsICdnZXRIb3VycycsICdn
ZXRNaWxsaXNlY29uZHMnLCAnZ2V0TWludXRlcycsICdnZXRNb250aCcsICdnZXRTZWNvbmRzJywg
J2dldFRpbWUnLCAnZ2V0VGltZXpvbmVPZmZzZXQnLCAnZ2V0VVRDRGF0ZScsICdnZXRVVENEYXkn
LCAnZ2V0VVRDRnVsbFllYXInLCAnZ2V0VVRDSG91cnMnLCAnZ2V0VVRDTWlsbGlzZWNvbmRzJywg
J2dldFVUQ01pbnV0ZXMnLCAnZ2V0VVRDTW9udGgnLCAnZ2V0VVRDU2Vjb25kcycsICdnZXRZZWFy
JywgJ3NldERhdGUnLCAnc2V0RnVsbFllYXInLCAnc2V0SG91cnMnLCAnc2V0TWlsbGlzZWNvbmRz
JywgJ3NldE1pbnV0ZXMnLCAnc2V0TW9udGgnLCAnc2V0U2Vjb25kcycsICdzZXRUaW1lJywgJ3Nl
dFVUQ0RhdGUnLCAnc2V0VVRDRnVsbFllYXInLCAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlz
ZWNvbmRzJywgJ3NldFVUQ01pbnV0ZXMnLCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycs
ICdzZXRZZWFyJywgJ3RvRGF0ZVN0cmluZycsICd0b0dNVFN0cmluZycsICd0b0lTT1N0cmluZycs
ICd0b0pTT04nLCAndG9Mb2NhbGVEYXRlU3RyaW5nJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvTG9j
YWxlVGltZVN0cmluZycsICd0b1N0cmluZycsICd0b1RpbWVTdHJpbmcnLCAndG9VVENTdHJpbmcn
LCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoUmVnRXhwKSBpcyBb
JyQmJywgIiQnIiwgJyQqJywgJyQrJywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2
JywgJyQ3JywgJyQ4JywgJyQ5JywgJyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICds
YXN0UGFyZW4nLCAnbGVmdENvbnRleHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywg
J3Byb3RvdHlwZScsICdyaWdodENvbnRleHQnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdkb3RB
bGwnLCAnZXhlYycsICdmbGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdtdWx0aWxpbmUn
LCAnc291cmNlJywgJ3N0aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXQorUEFT
UyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGls
ZScsICdjb25zdHJ1Y3RvcicsICdkb3RBbGwnLCAnZXhlYycsICdmbGFncycsICdnbG9iYWwnLCAn
aGFzSW5kaWNlcycsICdpZ25vcmVDYXNlJywgJ211bHRpbGluZScsICdzb3VyY2UnLCAnc3RpY2t5
JywgJ3Rlc3QnLCAndG9TdHJpbmcnLCAndW5pY29kZSddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoRXJyb3IpIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3N0YWNr
VHJhY2VMaW1pdCddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90
eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMics
J0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNv
c2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywn
Y2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90
JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93Jywn
cmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywn
dHJ1bmMnXQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFtZWQt
Y2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzMwMzApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNCwyNCArMTQsMzQgQEAgUEFTUyBtYXRjaFJlc3VsdDFbMF0gaXMgIjAxLzAy
LzIwMDEiCiBQQVNTIG1hdGNoUmVzdWx0MS5ncm91cHMubW9udGggaXMgIjAxIgogUEFTUyBtYXRj
aFJlc3VsdDEuZ3JvdXBzLmRheSBpcyAiMDIiCiBQQVNTIG1hdGNoUmVzdWx0MS5ncm91cHMueWVh
ciBpcyAiMjAwMSIKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQx
KS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1dCIsImxl
bmd0aCJdCitQQVNTIG1hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5tb250aCBpcyBbMCwyXQor
UEFTUyBtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMuZGF5IGlzIFszLDVdCitQQVNTIG1hdGNo
UmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy55ZWFyIGlzIFs2LDEwXQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJn
cm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdCiBQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MS5ncm91cHMpLnNvcnQoKSBpcyBbImRheSIs
Im1vbnRoIiwieWVhciJdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVz
dWx0MS5pbmRpY2VzLmdyb3Vwcykuc29ydCgpIGlzIFsiZGF5IiwibW9udGgiLCJ5ZWFyIl0KIFBB
U1MgbWF0Y2hSZXN1bHQyYVswXSBpcyAiSm9obiBXLiBTbWl0aCIKIFBBU1MgbWF0Y2hSZXN1bHQy
YVsxXSBpcyAiSm9obiIKIFBBU1MgbWF0Y2hSZXN1bHQyYVsyXSBpcyAiVy4iCiBQQVNTIG1hdGNo
UmVzdWx0MmFbM10gaXMgIlNtaXRoIgorUEFTUyBtYXRjaFJlc3VsdDJhLmluZGljZXNbMV0gaXMg
WzAsNF0KK1BBU1MgbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzJdIGlzIFs1LDddCitQQVNTIG1hdGNo
UmVzdWx0MmEuaW5kaWNlc1szXSBpcyBbOCwxM10KIFBBU1MgbWF0Y2hSZXN1bHQyYVsxXSBpcyBt
YXRjaFJlc3VsdDJhLmdyb3Vwcy5maXJzdF9uYW1lCiBQQVNTIG1hdGNoUmVzdWx0MmFbMl0gaXMg
bWF0Y2hSZXN1bHQyYS5ncm91cHMubWlkZGxlX2luaXRpYWwKIFBBU1MgbWF0Y2hSZXN1bHQyYVsz
XSBpcyBtYXRjaFJlc3VsdDJhLmdyb3Vwcy5sYXN0X25hbWUKLVBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3Jv
dXBzIiwiaW5kZXgiLCJpbnB1dCIsImxlbmd0aCJdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIs
ImluZGV4IiwiaW5kaWNlcyIsImlucHV0IiwibGVuZ3RoIl0KIFBBU1MgbWF0Y2hSZXN1bHQyYlsw
XSBpcyAiU2FsbHkgQnJvd24iCiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMgIlNhbGx5IgogUEFT
UyBtYXRjaFJlc3VsdDJiWzJdIGlzIHVuZGVmaW5lZC4KIFBBU1MgbWF0Y2hSZXN1bHQyYlszXSBp
cyAiQnJvd24iCitQQVNTIG1hdGNoUmVzdWx0MmIuaW5kaWNlc1sxXSBpcyBbMCw1XQorUEFTUyBt
YXRjaFJlc3VsdDJiLmluZGljZXNbMl0gaXMgdW5kZWZpbmVkLgorUEFTUyBtYXRjaFJlc3VsdDJi
LmluZGljZXNbM10gaXMgWzYsMTFdCiBQQVNTIG1hdGNoUmVzdWx0MmJbMV0gaXMgbWF0Y2hSZXN1
bHQyYi5ncm91cHMuZmlyc3RfbmFtZQogUEFTUyBtYXRjaFJlc3VsdDJiWzJdIGlzIG1hdGNoUmVz
dWx0MmIuZ3JvdXBzLm1pZGRsZV9pbml0aWFsCiBQQVNTIG1hdGNoUmVzdWx0MmJbM10gaXMgbWF0
Y2hSZXN1bHQyYi5ncm91cHMubGFzdF9uYW1lCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImlu
ZGV4IiwiaW5wdXQiLCJsZW5ndGgiXQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyht
YXRjaFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIs
ImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdCiBQQVNTIHJlMy50b1N0cmluZygpIGlzICJcL14o
PzxwYXJ0MT4uKik6KD88cGFydDI+LiopOlxcazxwYXJ0Mj46XFxrPHBhcnQxPiRcLyIKIFBBU1Mg
cmUzLnRlc3QoImE6YjpiOmEiKSBpcyB0cnVlCiBQQVNTIHJlMy50ZXN0KCJhOmE6YTphIikgaXMg
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwkocmV2aXNpb24gMjczMDMwKQorKysgTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZhciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQg
PSB7CiAgICAgIkRhdGUiOiAiWydVVEMnLCAnbGVuZ3RoJywgJ25hbWUnLCAnbm93JywgJ3BhcnNl
JywgJ3Byb3RvdHlwZSddIiwKICAgICAiRGF0ZS5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3Rvcics
ICdnZXREYXRlJywgJ2dldERheScsICdnZXRGdWxsWWVhcicsICdnZXRIb3VycycsICdnZXRNaWxs
aXNlY29uZHMnLCAnZ2V0TWludXRlcycsICdnZXRNb250aCcsICdnZXRTZWNvbmRzJywgJ2dldFRp
bWUnLCAnZ2V0VGltZXpvbmVPZmZzZXQnLCAnZ2V0VVRDRGF0ZScsICdnZXRVVENEYXknLCAnZ2V0
VVRDRnVsbFllYXInLCAnZ2V0VVRDSG91cnMnLCAnZ2V0VVRDTWlsbGlzZWNvbmRzJywgJ2dldFVU
Q01pbnV0ZXMnLCAnZ2V0VVRDTW9udGgnLCAnZ2V0VVRDU2Vjb25kcycsICdnZXRZZWFyJywgJ3Nl
dERhdGUnLCAnc2V0RnVsbFllYXInLCAnc2V0SG91cnMnLCAnc2V0TWlsbGlzZWNvbmRzJywgJ3Nl
dE1pbnV0ZXMnLCAnc2V0TW9udGgnLCAnc2V0U2Vjb25kcycsICdzZXRUaW1lJywgJ3NldFVUQ0Rh
dGUnLCAnc2V0VVRDRnVsbFllYXInLCAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlzZWNvbmRz
JywgJ3NldFVUQ01pbnV0ZXMnLCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycsICdzZXRZ
ZWFyJywgJ3RvRGF0ZVN0cmluZycsICd0b0dNVFN0cmluZycsICd0b0lTT1N0cmluZycsICd0b0pT
T04nLCAndG9Mb2NhbGVEYXRlU3RyaW5nJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvTG9jYWxlVGlt
ZVN0cmluZycsICd0b1N0cmluZycsICd0b1RpbWVTdHJpbmcnLCAndG9VVENTdHJpbmcnLCAndmFs
dWVPZiddIiwKICAgICAiUmVnRXhwIjogIlsnJCYnLCBcIiQnXCIsICckKicsICckKycsICckMScs
ICckMicsICckMycsICckNCcsICckNScsICckNicsICckNycsICckOCcsICckOScsICckXycsICck
YCcsICdpbnB1dCcsICdsYXN0TWF0Y2gnLCAnbGFzdFBhcmVuJywgJ2xlZnRDb250ZXh0JywgJ2xl
bmd0aCcsICdtdWx0aWxpbmUnLCAnbmFtZScsICdwcm90b3R5cGUnLCAncmlnaHRDb250ZXh0J10i
LAotICAgICJSZWdFeHAucHJvdG90eXBlIjogIlsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdk
b3RBbGwnLCAnZXhlYycsICdmbGFncycsICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdtdWx0aWxp
bmUnLCAnc291cmNlJywgJ3N0aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXSIs
CisgICAgIlJlZ0V4cC5wcm90b3R5cGUiOiAiWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2Rv
dEFsbCcsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdoYXNJbmRpY2VzJywgJ2lnbm9yZUNh
c2UnLCAnbXVsdGlsaW5lJywgJ3NvdXJjZScsICdzdGlja3knLCAndGVzdCcsICd0b1N0cmluZycs
ICd1bmljb2RlJ10iLAogICAgICJFcnJvciI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlw
ZScsICdzdGFja1RyYWNlTGltaXQnXSIsCiAgICAgIkVycm9yLnByb3RvdHlwZSI6ICJbJ2NvbnN0
cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddIiwKICAgICAiTWF0aCI6ICJb
J0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMics
J2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5o
JywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29y
JywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdt
YXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3Fy
dCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddIiwKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwkocmV2
aXNpb24gMjczMDMwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1l
ZC1jYXB0dXJlLWdyb3Vwcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsMjUgKzE1LDMyIEBAIHNo
b3VsZEJlKCdleGVjUmVzdWx0MS5ncm91cHMueWVhcicsICciMjAKIHNob3VsZEJlKCdPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjUmVzdWx0MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwi
MyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXScpOwogc2hvdWxkQmUoJ09iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWNSZXN1bHQxLmdyb3Vwcykuc29ydCgpJywgJ1siZGF5
IiwibW9udGgiLCJ5ZWFyIl0nKTsKIAotdmFyIG1hdGNoUmVzdWx0MSA9IHNyYzEubWF0Y2gocmUx
KTsKK3ZhciBtYXRjaFJlc3VsdDEgPSBzcmMxLm1hdGNoKG5ldyBSZWdFeHAocmUxLCAnZCcpKTsK
IHNob3VsZEJlKCdtYXRjaFJlc3VsdDFbMF0nLCAnIjAxLzAyLzIwMDEiJyk7CiBzaG91bGRCZSgn
bWF0Y2hSZXN1bHQxLmdyb3Vwcy5tb250aCcsICciMDEiJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1
bHQxLmdyb3Vwcy5kYXknLCAnIjAyIicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MS5ncm91cHMu
eWVhcicsICciMjAwMSInKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyht
YXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIs
ImlucHV0IiwibGVuZ3RoIl0nKTsKK3Nob3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91
cHMubW9udGgnLCAnWzAsMl0nKTsKK3Nob3VsZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91
cHMuZGF5JywgJ1szLDVdJyk7CitzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBz
LnllYXInLCAnWzYsMTBdJyk7CitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
bWF0Y2hSZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgi
LCJpbmRpY2VzIiwiaW5wdXQiLCJsZW5ndGgiXScpOwogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MS5ncm91cHMpLnNvcnQoKScsICdbImRheSIsIm1vbnRo
IiwieWVhciJdJyk7CitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hS
ZXN1bHQxLmluZGljZXMuZ3JvdXBzKS5zb3J0KCknLCAnWyJkYXkiLCJtb250aCIsInllYXIiXScp
OwogCi12YXIgcmUyID0gLyg/PGZpcnN0X25hbWU+XHcrKVxzKD86KD88bWlkZGxlX2luaXRpYWw+
XHdcLilccyk/KD88bGFzdF9uYW1lPlx3KykvOwordmFyIHJlMiA9IC8oPzxmaXJzdF9uYW1lPlx3
Kylccyg/Oig/PG1pZGRsZV9pbml0aWFsPlx3XC4pXHMpPyg/PGxhc3RfbmFtZT5cdyspL2Q7CiB2
YXIgbWF0Y2hSZXN1bHQyYSA9ICJKb2huIFcuIFNtaXRoIi5tYXRjaChyZTIpOwogCiBzaG91bGRC
ZSgnbWF0Y2hSZXN1bHQyYVswXScsICciSm9obiBXLiBTbWl0aCInKTsKIHNob3VsZEJlKCdtYXRj
aFJlc3VsdDJhWzFdJywgJyJKb2huIicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMl0nLCAn
IlcuIicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbM10nLCAnIlNtaXRoIicpOworc2hvdWxk
QmUoJ21hdGNoUmVzdWx0MmEuaW5kaWNlc1sxXScsICdbMCw0XScpOworc2hvdWxkQmUoJ21hdGNo
UmVzdWx0MmEuaW5kaWNlc1syXScsICdbNSw3XScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmEu
aW5kaWNlc1szXScsICdbOCwxM10nKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzFdJywgJ21h
dGNoUmVzdWx0MmEuZ3JvdXBzLmZpcnN0X25hbWUnKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJh
WzJdJywgJ21hdGNoUmVzdWx0MmEuZ3JvdXBzLm1pZGRsZV9pbml0aWFsJyk7CiBzaG91bGRCZSgn
bWF0Y2hSZXN1bHQyYVszXScsICdtYXRjaFJlc3VsdDJhLmdyb3Vwcy5sYXN0X25hbWUnKTsKLXNo
b3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScs
ICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsK
K3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQo
KScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIs
Imxlbmd0aCJdJyk7CiAKIC8vIFZlcmlmeSB0aGF0IG5hbWVkIGdyb3VwcyB0aGF0IGFyZW4ndCBt
YXRjaGVkIGFyZSB1bmRlZmluZWQuCiB2YXIgbWF0Y2hSZXN1bHQyYiA9ICJTYWxseSBCcm93biIu
bWF0Y2gocmUyKTsKQEAgLTQyLDEwICs0OSwxMyBAQCBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlsw
XScsICciU2FsbHkgQnJvCiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlsxXScsICciU2FsbHkiJyk7
CiBzaG91bGRCZVVuZGVmaW5lZCgnbWF0Y2hSZXN1bHQyYlsyXScpOwogc2hvdWxkQmUoJ21hdGNo
UmVzdWx0MmJbM10nLCAnIkJyb3duIicpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmIuaW5kaWNl
c1sxXScsICdbMCw1XScpOworc2hvdWxkQmVVbmRlZmluZWQoJ21hdGNoUmVzdWx0MmIuaW5kaWNl
c1syXScpOworc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmIuaW5kaWNlc1szXScsICdbNiwxMV0nKTsK
IHNob3VsZEJlKCdtYXRjaFJlc3VsdDJiWzFdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLmZpcnN0
X25hbWUnKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJiWzJdJywgJ21hdGNoUmVzdWx0MmIuZ3Jv
dXBzLm1pZGRsZV9pbml0aWFsJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlszXScsICdtYXRj
aFJlc3VsdDJiLmdyb3Vwcy5sYXN0X25hbWUnKTsKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJncm91
cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0nKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdbIjAiLCIxIiwiMiIsIjMiLCJn
cm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0aCJdJyk7CiAKIC8vIFZlcmlm
eSB0aGF0IG5hbWVkIGJhY2tyZWZlcmVuY2VzIHdvcmsuCiB2YXIgcmUzID0gL14oPzxwYXJ0MT4u
Kik6KD88cGFydDI+LiopOlxrPHBhcnQyPjpcazxwYXJ0MT4kLzsK
</data>
<flag name="commit-queue"
          id="439513"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420842</attachid>
            <date>2021-02-18 10:24:07 -0800</date>
            <delta_ts>2021-02-18 10:45:39 -0800</delta_ts>
            <desc>Updated patch addressing review comments</desc>
            <filename>202475-3.patch</filename>
            <type>text/plain</type>
            <size>48065</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzMwNzMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNlcyBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAqIGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNf
UmVnRXhwLnByb3RvdHlwZS5mbGFncy5qczoKKyAgICAgICAgKiBzdHJlc3Mvc3RhdGljLWdldHRl
ci1pbi1uYW1lcy5qczoKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAy
LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+IGFuZCBTZXJnZXkgUnViYW5v
diA8Y2hpMTg3QGdtYWlsLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogaW1wbGVtZW50IG5v
bi10cmFwcGluZyBmbG9hdCB0byBpbnQgY29udmVyc2lvbgpJbmRleDogSlNUZXN0cy9lczYvUHJv
eHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5cGUuZmxhZ3MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9lczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MuanMJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvZXM2L1Byb3h5X2ludGVy
bmFsX2dldF9jYWxsc19SZWdFeHAucHJvdG90eXBlLmZsYWdzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogdmFyIGdldCA9IFtdOwogdmFyIHAgPSBu
ZXcgUHJveHkoe30sIHsgZ2V0OiBmdW5jdGlvbihvLCBrKSB7IGdldC5wdXNoKGspOyByZXR1cm4g
b1trXTsgfX0pOwogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90
eXBlLCAnZmxhZ3MnKS5nZXQuY2FsbChwKTsKLXJldHVybiBnZXQgKyAnJyA9PT0gImdsb2JhbCxp
Z25vcmVDYXNlLG11bHRpbGluZSxkb3RBbGwsdW5pY29kZSxzdGlja3kiOworcmV0dXJuIGdldCAr
ICcnID09PSAiaGFzSW5kaWNlcyxnbG9iYWwsaWdub3JlQ2FzZSxtdWx0aWxpbmUsZG90QWxsLHVu
aWNvZGUsc3RpY2t5IjsKICAgICAgIAogfQogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdGF0aWMt
Z2V0dGVyLWluLW5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3N0YXRpYy1n
ZXR0ZXItaW4tbmFtZXMuanMJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvc3RyZXNzL3N0
YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsNSArMyw1IEBAIGZ1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwogfQogCi1zaG91bGRCZShKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkpLCAn
WyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJkb3RBbGwiLCJleGVjIiwiZmxhZ3MiLCJnbG9iYWwi
LCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwic291cmNlIiwic3RpY2t5IiwidGVzdCIsInRvU3Ry
aW5nIiwidW5pY29kZSJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkpLCAnWyJjb21waWxlIiwiY29u
c3RydWN0b3IiLCJkb3RBbGwiLCJleGVjIiwiZmxhZ3MiLCJnbG9iYWwiLCJoYXNJbmRpY2VzIiwi
aWdub3JlQ2FzZSIsIm11bHRpbGluZSIsInNvdXJjZSIsInN0aWNreSIsInRlc3QiLCJ0b1N0cmlu
ZyIsInVuaWNvZGUiXScpOwogc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMoL0NvY29hLykuc29ydCgpKSwgJ1sibGFzdEluZGV4Il0nKTsKSW5kZXg6IEpT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwJKHJldmlzaW9uIDI3MzAzMCkKKysrIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQCBza2lwOgogICAgIC0gY2xlYW51
cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKLSAgICAtIHJlZ2V4cC1tYXRjaC1pbmRpY2VzCiAg
ICAgLSB0b3AtbGV2ZWwtYXdhaXQKICAgcGF0aHM6CiAgIGZpbGVzOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDItMTggIE1p
Y2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVt
ZW50IFJlZ0V4cCBNYXRjaCBJbmRpY2VzIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIGxhdGVzdCB2ZXJz
aW9uIG9mIHRoZSBSZWdFeHAgbWF0Y2ggaW5kaWNlcyBwcm9wb3NhbCAoaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtcmVnZXhwLW1hdGNoLWluZGljZXMpLgorICAgICAgICBJdCBpbmNs
dWRlcyBhIG5ldyAnZCcgZmxhZyB0byBSZWdFeHAncyB0byB0cmlnZ2VyIHRoZSBwb3B1bGF0aW9u
IG9mIHRoZSAnaW5kaWNlcycgcHJvcGVydHkgdHJlZSBpbiBhIE1hdGNoZXMgcmVzdWx0IGZyb20K
KyAgICAgICAgUmVnRXhwLmV4ZWMoKSBhbmQgcmVsYXRlZCBtZXRob2RzLiAgVGhpcyBjaGFuZ2Ug
aXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBKZXRTdHJlYW0yLgorCisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpmaXJlV2F0Y2hwb2ludEFuZE1ha2VBbGxBcnJheVN0cnVjdHVyZXNT
bG93UHV0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cE1hdGNoZXNBcnJheVdpdGhJbmRpY2VzU3RydWN0dXJlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlT
dHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6Om91dHB1dE9uZVRlc3QpOgorICAg
ICAgICAoSlNDOjpyZWdleHBUb1NvdXJjZVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHA6CisgICAgICAg
IChKU0M6OmNyZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlU3RydWN0dXJlV2l0aEluZGljZXNJbXBsKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5kaWNl
c1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlX
aXRoSW5kaWNlc1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNJ
bmRpY2VzQXJyYXlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVz
QXJyYXlXaXRoSW5kaWNlc1Nsb3dQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVS
ZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpmbGFnc1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogeWFyci9ZYXJyRmxhZ3MuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpwYXJz
ZUZsYWdzKToKKyAgICAgICAgKiB5YXJyL1lhcnJGbGFncy5oOgorICAgICAgICAqIHlhcnIvWWFy
ckludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6aGFz
SW5kaWNlcyBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6aGFzSW5kaWNlcyBjb25zdCk6CisKIDIwMjEtMDItMTYg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1v
dmUgdW5uZWNlc3NhcnkgaGFjayBmb3IgaU9TNwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1
ZGUgIlNldFByaXZhdGVCcmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yNjA3LDggKzI2MDgsMjQgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
bV92bSwgZ2xvYmFsT2JqZWN0VmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRj
aHBvaW50KCkpOworCisgICAgICAgICAgICAgICAgICAgIFJlZ0V4cCogcmVnRXhwID0gbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIHJlZ0V4cE9iamVjdE5vZGUgPSBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVn
RXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENv
bnN0YW50PFJlZ0V4cE9iamVjdCo+KG1fdm0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3ROb2Rl
LT5jYXN0T3BlcmFuZDxSZWdFeHAqPigpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gUmVnRXhwRXhlY05vbkds
b2JhbE9yU3RpY2t5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnRXhwID0gbm9kZS0+Y2Fz
dE9wZXJhbmQ8UmVnRXhwKj4oKTsKKwogICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IHN0cnVjdHVyZVNldDsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlU2V0
LmFkZChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgcmVnRXhwIGlz
IHVua25vd24sIHdlIG5lZWQgdG8gcHV0IGJvdGggcmVnRXhwIE1hdGNoZXNBcnJheSBzdHJ1Y3R1
cmUgdmFyaWFudHMgaW4gb3VyIHNldC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAg
fHwgIXJlZ0V4cC0+aGFzSW5kaWNlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
dXJlU2V0LmFkZChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+cmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdF
eHAgfHwgcmVnRXhwLT5oYXNJbmRpY2VzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZWdF
eHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNlc1N0cnVjdHVyZSgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgc3RydWN0dXJlU2V0KTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5tZXJnZShTcGVjT3RoZXIpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTk1LDEyICs1OTUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgobV9u
b2RlLT5vcCgpID09IFJlZ0V4cEV4ZWMgfHwgbV9ub2RlLT5vcCgpID09IFJlZ0V4cEV4ZWNOb25H
bG9iYWxPclN0aWNreSkgJiYgcmVnRXhwLT5oYXNOYW1lZENhcHR1cmVzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzY0NjQKLSAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50IHN0cmVuZ3RoIHJl
ZHVjdGlvbiBvcHRpbWl6YXRpb24gZm9yIG5hbWVkIGNhcHR1cmUgZ3JvdXBzLgotICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkdpdmluZyB1cCBiZWNhdXNlIG9mIG5hbWVkIGNhcHR1cmUgZ3JvdXBzLlxuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoKG1fbm9kZS0+
b3AoKSA9PSBSZWdFeHBFeGVjIHx8IG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjTm9uR2xvYmFs
T3JTdGlja3kpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWdFeHAtPmhhc05hbWVkQ2Fw
dHVyZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NjQKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEltcGxlbWVudCBzdHJlbmd0aCByZWR1Y3Rpb24gb3B0aW1pemF0aW9uIGZvciBuYW1l
ZCBjYXB0dXJlIGdyb3Vwcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG9m
IG5hbWVkIGNhcHR1cmUgZ3JvdXBzLlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBp
ZiAocmVnRXhwLT5oYXNJbmRpY2VzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTMwCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnQgc3RyZW5ndGggcmVkdWN0aW9uIG9wdGlt
aXphdGlvbiBmb3IgUmVnRXhwIHdpdGggbWF0Y2ggaW5kaWNlcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkdpdmluZyB1cCBiZWNhdXNlIG9mIG1hdGNoIGluZGljZXMuXG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXpp
bHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQAogICAgIG1hY3Jv
KGdyYW51bGFyaXR5KSBcCiAgICAgbWFjcm8oZ3JvdXBzKSBcCiAgICAgbWFjcm8oaGFzKSBcCisg
ICAgbWFjcm8oaGFzSW5kaWNlcykgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCiAgICAg
bWFjcm8oaGFzaCkgXAogICAgIG1hY3JvKGhlYWRlcikgXApAQCAtMTM4LDYgKzEzOSw3IEBACiAg
ICAgbWFjcm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3JvKGlnbm9yZVB1bmN0dWF0aW9uKSBcCiAg
ICAgbWFjcm8oaW5kZXgpIFwKKyAgICBtYWNybyhpbmRpY2VzKSBcCiAgICAgbWFjcm8oaW5mZXJy
ZWROYW1lKSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKICAgICBtYWNybyhpbnN0cnVjdGlvbkNvdW50
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzMwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNCw2ICs4MDQsOCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cFByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5V2l0aEluZGljZXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVz
QXJyYXlXaXRoSW5kaWNlc1N0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hl
c0luZGljZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJ
bmRpY2VzQXJyYXlTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKIAogICAgIG1fbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVy
ZT4mIGluaXQpIHsKQEAgLTE3NDgsNiArMTc1MCwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpm
aXJlV2F0Y2hwb2ludEFuZE1hCiAgICAgU3RydWN0dXJlKiBzbG93UHV0U3RydWN0dXJlOwogICAg
IHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlKHZtLCB0aGlzKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNlc1Nsb3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMpOwor
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGljZXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBzbG93UHV0U3RydWN0dXJlKTsKKyAgICBzbG93UHV0U3RydWN0dXJlID0gY3JlYXRlUmVnRXhw
TWF0Y2hlc0luZGljZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMpOworICAgIG1fcmVn
RXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHNsb3dQdXRTdHJ1
Y3R1cmUpOwogICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVNs
b3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBt
X2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUp
OwogCkBAIC0yMDI1LDYgKzIwMzEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsCiAgICAgdGhpc09iamVjdC0+bV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYWNjZXNzb3JQcm9w
ZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGlj
ZXNTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0
Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVOYW1l
c3BhY2VPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
cm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjczMDMwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE3LDYgKzQxNyw4IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Fj
Y2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGljZXNTdHJ1Y3R1cmU7
CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5
U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1Y3R1cmU7
CkBAIC04MjYsNiArODI4LDggQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogZGF0YVByb3BlcnR5
RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVByb3BlcnR5
RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGFj
Y2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJl
KiByZWdFeHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNlc1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGljZXNTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxl
UmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNw
YWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94eU9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9u
IDI3MzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFsVGVzdENv
bGxlY3Rvcjo6b3V0cAogICAgICAgICAgICAgZnB1dGMoJ2cnLCBtX2ZpbGUpOwogICAgICAgICBp
ZiAocmVnRXhwLT5pZ25vcmVDYXNlKCkpCiAgICAgICAgICAgICBmcHV0YygnaScsIG1fZmlsZSk7
CisgICAgICAgIGlmIChyZWdFeHAtPmhhc0luZGljZXMoKSkKKyAgICAgICAgICAgIGZwdXRjKCdk
JywgbV9maWxlKTsKICAgICAgICAgaWYgKHJlZ0V4cC0+bXVsdGlsaW5lKCkpCiAgICAgICAgICAg
ICBmcHV0YygnbScsIG1fZmlsZSk7CiAgICAgICAgIGlmIChyZWdFeHAtPmRvdEFsbCgpKQpAQCAt
NDg4LDYgKzQ5MCw4IEBAIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cFRvU291cmNlU3RyaW5nKGNvbnMK
ICAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICdnJzsKICAgICBpZiAocmVnRXhwLT5pZ25vcmVD
YXNlKCkpCiAgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7CisgICAgaWYgKHJlZ0V4cC0+
aGFzSW5kaWNlcygpKQorICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdkJzsKICAgICBpZiAocmVn
RXhwLT5tdWx0aWxpbmUoKSkKICAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7CiAgICAgaWYg
KHJlZ0V4cC0+ZG90QWxsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBzdGlja3koKTsg
fQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoWWFy
cjo6RmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9vbCBkb3RBbGwoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzLmNvbnRhaW5zKFlhcnI6OkZsYWdzOjpEb3RBbGwpOyB9CisgICAgYm9vbCBoYXNJbmRp
Y2VzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhZYXJyOjpGbGFnczo6SGFzSW5k
aWNlcyk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDI3MzAzMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDcgKzQwLDggQEAgSlNBcnJheSogY3JlYXRlRW1wdHlSZWdFeHBNYXRj
aGVzQXJyYXkoSgogICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOwogCiAg
ICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgewotICAg
ICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKHNj
b3BlLCAmZGVmZXJyYWxDb250ZXh0LCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgYXJyYXkg
PSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgJmRlZmVy
cmFsQ29udGV4dCwKKyAgICAgICAgICAgIHJlZ0V4cC0+aGFzSW5kaWNlcygpID8gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNlc1N0cnVjdHVyZSgpIDogZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJu
cygpICsgMSk7CiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4g
b3V0IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKICAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhp
cyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwogICAgICAg
ICAvLyBmdW5jdGlvbiB3aWxsIGNvcnJlY3RseSBoYW5kbGUgYW4gZXhjZXB0aW9uIGJlaW5nIHRo
cm93biBmcm9tIGhlcmUuCkBAIC01NCw3ICs1NSw4IEBAIEpTQXJyYXkqIGNyZWF0ZUVtcHR5UmVn
RXhwTWF0Y2hlc0FycmF5KEoKICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4
V2l0aG91dEJhcnJpZXIoc2NvcGUsIGksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0
Y2hlc0FycmF5KHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAg
ICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHNj
b3BlLCAmZGVmZXJyYWxDb250ZXh0LAorICAgICAgICAgICAgcmVnRXhwLT5oYXNJbmRpY2VzKCkg
PyBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVdpdGhJbmRpY2VzU3RydWN0dXJlKCkg
OiBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51
bVN1YnBhdHRlcm5zKCkgKyAxKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwogICAg
ICAgICAKICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3Bl
LCAwLCBqc0VtcHR5U3RyaW5nKHZtKSwgQXJyYXlXaXRoQ29udGlndW91cyk7CkBAIC02OCw2ICs3
MCw4IEBAIEpTQXJyYXkqIGNyZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KEoKICAgICBhcnJh
eS0+cHV0RGlyZWN0V2l0aG91dEJhcnJpZXIoUmVnRXhwTWF0Y2hlc0FycmF5SW5kZXhQcm9wZXJ0
eU9mZnNldCwganNOdW1iZXIoLTEpKTsKICAgICBhcnJheS0+cHV0RGlyZWN0V2l0aG91dEJhcnJp
ZXIoUmVnRXhwTWF0Y2hlc0FycmF5SW5wdXRQcm9wZXJ0eU9mZnNldCwgaW5wdXQpOwogICAgIGFy
cmF5LT5wdXREaXJlY3RXaXRob3V0QmFycmllcihSZWdFeHBNYXRjaGVzQXJyYXlHcm91cHNQcm9w
ZXJ0eU9mZnNldCwganNVbmRlZmluZWQoKSk7CisgICAgaWYgKHJlZ0V4cC0+aGFzSW5kaWNlcygp
KQorICAgICAgICBhcnJheS0+cHV0RGlyZWN0V2l0aG91dEJhcnJpZXIoUmVnRXhwTWF0Y2hlc0Fy
cmF5SW5kaWNlc1Byb3BlcnR5T2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gYXJy
YXk7CiB9CiAKQEAgLTg0LDE0ICs4OCw1OCBAQCBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmVJbXBsKFZNCiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlV2l0aEluZGljZXNJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKK3sKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0OworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmluZGV4LCAwLCBvZmZzZXQpOworICAgIEFT
U0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0Y2hlc0FycmF5SW5kZXhQcm9wZXJ0eU9mZnNldCk7Cisg
ICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+aW5wdXQsIDAsIG9mZnNldCk7CisgICAgQVNTRVJUKG9m
ZnNldCA9PSBSZWdFeHBNYXRjaGVzQXJyYXlJbnB1dFByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5ncm91cHMsIDAsIG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA9
PSBSZWdFeHBNYXRjaGVzQXJyYXlHcm91cHNQcm9wZXJ0eU9mZnNldCk7CisgICAgc3RydWN0dXJl
ID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJv
cGVydHlOYW1lcy0+aW5kaWNlcywgMCwgb2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IFJl
Z0V4cE1hdGNoZXNBcnJheUluZGljZXNQcm9wZXJ0eU9mZnNldCk7CisgICAgcmV0dXJuIHN0cnVj
dHVyZTsKK30KKworc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlSW5kaWNlc1N0cnVjdHVyZUltcGwo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Z3Jv
dXBzLCAwLCBvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gUmVnRXhwTWF0Y2hlc0luZGlj
ZXNHcm91cHNQcm9wZXJ0eU9mZnNldCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZTsKK30KKwogU3Ry
dWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBs
KHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aENvbnRpZ3VvdXMpOwogfQogCitTdHJ1Y3R1cmUq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVdpdGhJbmRpY2VzU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3RydWN0dXJl
V2l0aEluZGljZXNJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aENvbnRpZ3VvdXMpOwor
fQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVh
dGVJbmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhDb250aWd1
b3VzKTsKK30KKwogU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1
cm4gY3JlYXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlKTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlX
aXRoSW5kaWNlc1Nsb3dQdXRTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVXaXRoSW5kaWNlc0ltcGwodm0s
IGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk7Cit9CisKK1N0cnVj
dHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVJ
bmRpY2VzU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24g
MjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiBz
dGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgUmVnRXhwTWF0Y2hlc0FycmF5SW5kZXhQcm9wZXJ0
eU9mZnNldCA9IDEwMDsKIHN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBSZWdFeHBNYXRjaGVz
QXJyYXlJbnB1dFByb3BlcnR5T2Zmc2V0ID0gMTAxOwogc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zm
c2V0IFJlZ0V4cE1hdGNoZXNBcnJheUdyb3Vwc1Byb3BlcnR5T2Zmc2V0ID0gMTAyOworc3RhdGlj
IGNvbnN0IFByb3BlcnR5T2Zmc2V0IFJlZ0V4cE1hdGNoZXNBcnJheUluZGljZXNQcm9wZXJ0eU9m
ZnNldCA9IDEwMzsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBSZWdFeHBNYXRjaGVzSW5k
aWNlc0dyb3Vwc1Byb3BlcnR5T2Zmc2V0ID0gMTAwOwogCiBBTFdBWVNfSU5MSU5FIEpTQXJyYXkq
IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkoT2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZSYgc2NvcGUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKQogewpAQCAtNzYsMTQg
Kzc4LDE4IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICBy
ZXN1bHQuZW5kID0gc3VicGF0dGVyblJlc3VsdHNbMV07CiAgICAgCiAgICAgSlNBcnJheSogYXJy
YXk7CisgICAgSlNBcnJheSogaW5kaWNlc0FycmF5ID0gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBoYW5kbGUgYXJyYXkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CiAg
ICAgCiAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5z
KCk7CiAgICAgYm9vbCBoYXNOYW1lZENhcHR1cmVzID0gcmVnRXhwLT5oYXNOYW1lZENhcHR1cmVz
KCk7CisgICAgYm9vbCBjcmVhdGVJbmRpY2VzID0gcmVnRXhwLT5oYXNJbmRpY2VzKCk7CiAgICAg
SlNPYmplY3QqIGdyb3VwcyA9IGhhc05hbWVkQ2FwdHVyZXMgPyBjb25zdHJ1Y3RFbXB0eU9iamVj
dCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpIDogbnVs
bHB0cjsKLSAgICBTdHJ1Y3R1cmUqIG1hdGNoU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIG1hdGNoU3RydWN0dXJl
ID0gY3JlYXRlSW5kaWNlcyA/IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5V2l0aElu
ZGljZXNTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKCk7CisKKyAgICBKU09iamVjdCogaW5kaWNlc0dyb3VwcyA9IGNyZWF0ZUluZGljZXMgJiYg
aGFzTmFtZWRDYXB0dXJlcyA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3Qt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSkgOiBudWxscHRyOwogCiAgICAgYXV0byBz
ZXRQcm9wZXJ0aWVzID0gWyZdICgpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdCh2bSwgUmVn
RXhwTWF0Y2hlc0FycmF5SW5kZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIocmVzdWx0LnN0YXJ0
KSk7CkBAIC05NCwxMiArMTAwLDM5IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVn
RXhwTWF0Y2gKICAgICAgICAgYXV0byBjYXBhY2l0eSA9IG1hdGNoU3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpOwogICAgICAgICBhdXRvIHNpemUgPSBtYXRjaFN0cnVjdHVyZS0+b3V0T2ZM
aW5lU2l6ZSgpOwogICAgICAgICBnY1NhZmVaZXJvTWVtb3J5KHN0YXRpY19jYXN0PEpTVmFsdWUq
PihhcnJheS0+YnV0dGVyZmx5KCktPmJhc2UoMCwgY2FwYWNpdHkpKSwgKGNhcGFjaXR5IC0gc2l6
ZSkgKiBzaXplb2YoSlNWYWx1ZSkpOworCisgICAgICAgIGlmIChjcmVhdGVJbmRpY2VzKSB7Cisg
ICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0KHZtLCBSZWdFeHBNYXRjaGVzQXJyYXlJbmRpY2Vz
UHJvcGVydHlPZmZzZXQsIGluZGljZXNBcnJheSk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
aW5kaWNlc1N0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJh
eVN0cnVjdHVyZSgpOworCisgICAgICAgICAgICBpbmRpY2VzQXJyYXktPnB1dERpcmVjdCh2bSwg
UmVnRXhwTWF0Y2hlc0luZGljZXNHcm91cHNQcm9wZXJ0eU9mZnNldCwgaW5kaWNlc0dyb3Vwcyk7
CisKKyAgICAgICAgICAgIEFTU0VSVCghaW5kaWNlc0FycmF5LT5idXR0ZXJmbHkoKS0+aW5kZXhp
bmdIZWFkZXIoKS0+cHJlQ2FwYWNpdHkoaW5kaWNlc1N0cnVjdHVyZSkpOworICAgICAgICAgICAg
YXV0byBpbmRpY2VzQ2FwYWNpdHkgPSBpbmRpY2VzU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOworICAgICAgICAgICAgYXV0byBpbmRpY2VzU2l6ZSA9IGluZGljZXNTdHJ1Y3R1cmUtPm91
dE9mTGluZVNpemUoKTsKKyAgICAgICAgICAgIGdjU2FmZVplcm9NZW1vcnkoc3RhdGljX2Nhc3Q8
SlNWYWx1ZSo+KGluZGljZXNBcnJheS0+YnV0dGVyZmx5KCktPmJhc2UoMCwgaW5kaWNlc0NhcGFj
aXR5KSksIChpbmRpY2VzQ2FwYWNpdHkgLSBpbmRpY2VzU2l6ZSkgKiBzaXplb2YoSlNWYWx1ZSkp
OworICAgICAgICB9CisgICAgfTsKKworICAgIGF1dG8gY3JlYXRlSW5kZXhBcnJheSA9IFsmXSAo
R0NEZWZlcnJhbENvbnRleHQmIGRlZmVycmFsQ29udGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7
CisgICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisgICAgICAg
IEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmlj
dGVkKHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMik7
CisgICAgICAgIHJlc3VsdC0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoc2NvcGUsIDAs
IGpzTnVtYmVyKHN0YXJ0KSk7CisgICAgICAgIHJlc3VsdC0+aW5pdGlhbGl6ZUluZGV4V2l0aG91
dEJhcnJpZXIoc2NvcGUsIDEsIGpzTnVtYmVyKGVuZCkpOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9OwogCiAgICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNI
YXZpbmdBQmFkVGltZSgpKSkgewogICAgICAgICBHQ0RlZmVycmFsQ29udGV4dCBkZWZlcnJhbENv
bnRleHQodm0uaGVhcCk7Ci0gICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUo
dm0pOwotICAgICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0
cmljdGVkKHNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0cnVjdHVyZSwgbnVtU3VicGF0
dGVybnMgKyAxKTsKKyAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBtYXRjaGVzQXJy
YXlTY29wZSh2bSk7CisgICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgaW5kaWNlc0Fy
cmF5U2NvcGUodm0pOworICAgICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWRSZXN0cmljdGVkKG1hdGNoZXNBcnJheVNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBtYXRj
aFN0cnVjdHVyZSwgbnVtU3VicGF0dGVybnMgKyAxKTsKKworICAgICAgICBpZiAoY3JlYXRlSW5k
aWNlcykKKyAgICAgICAgICAgIGluZGljZXNBcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWRSZXN0cmljdGVkKGluZGljZXNBcnJheVNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBn
bG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNJbmRpY2VzQXJyYXlTdHJ1Y3R1cmUoKSwgbnVtU3Vi
cGF0dGVybnMgKyAxKTsKIAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRo
cm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0CiAgICAgICAgIC8vIHdoZW4gbWFr
aW5nIHRoaXMgY2hhbmdlIHdlIHNob3VsZCBjaGVjayB0aGF0IGFsbCBjbGllbnRzIG9mIHRoaXMK
QEAgLTEwOSw4ICsxNDIsOCBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1h
dGNoCiAKICAgICAgICAgc2V0UHJvcGVydGllcygpOwogICAgICAgICAKLSAgICAgICAgYXJyYXkt
PmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNjb3BlLCAwLCBqc1N1YnN0cmluZ09mUmVz
b2x2ZWQodm0sICZkZWZlcnJhbENvbnRleHQsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5l
bmQgLSByZXN1bHQuc3RhcnQpKTsKLSAgICAgICAgCisgICAgICAgIGFycmF5LT5pbml0aWFsaXpl
SW5kZXhXaXRob3V0QmFycmllcihtYXRjaGVzQXJyYXlTY29wZSwgMCwganNTdWJzdHJpbmdPZlJl
c29sdmVkKHZtLCAmZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQu
ZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CiAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0
ZXJuUmVzdWx0c1syICogaV07CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwpAQCAtMTE4LDEy
ICsxNTEsMjcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAg
ICAgICAgICAgICAgIHZhbHVlID0ganNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAmZGVmZXJyYWxD
b250ZXh0LCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0gLSBzdGFy
dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwotICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKHNj
b3BlLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91
dEJhcnJpZXIobWF0Y2hlc0FycmF5U2NvcGUsIGksIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChjcmVhdGVJbmRpY2VzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQg
PSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAg
aW5kaWNlc0FycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihpbmRpY2VzQXJyYXlT
Y29wZSwgaSwgY3JlYXRlSW5kZXhBcnJheShkZWZlcnJhbENvbnRleHQsIHN0YXJ0LCBzdWJwYXR0
ZXJuUmVzdWx0c1syICogaSArIDFdKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBpbmRpY2VzQXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKGlu
ZGljZXNBcnJheVNjb3BlLCBpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29u
dGV4dCh2bS5oZWFwKTsKLSAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2
bSk7Ci0gICAgICAgIGFycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNB
cnJheShzY29wZSwgJmRlZmVycmFsQ29udGV4dCwgbWF0Y2hTdHJ1Y3R1cmUsIG51bVN1YnBhdHRl
cm5zICsgMSk7CisgICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgbWF0Y2hlc0FycmF5
U2NvcGUodm0pOworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIGluZGljZXNBcnJh
eVNjb3BlKHZtKTsKKyAgICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhw
TWF0Y2hlc0FycmF5KG1hdGNoZXNBcnJheVNjb3BlLCAmZGVmZXJyYWxDb250ZXh0LCBtYXRjaFN0
cnVjdHVyZSwgbnVtU3VicGF0dGVybnMgKyAxKTsKKworICAgICAgICBpZiAoY3JlYXRlSW5kaWNl
cykKKyAgICAgICAgICAgIGluZGljZXNBcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdF
eHBNYXRjaGVzQXJyYXkoaW5kaWNlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGdsb2Jh
bE9iamVjdC0+cmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZSgpLCBudW1TdWJwYXR0
ZXJucyArIDEpOwogCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cg
YW4gb3V0IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKICAgICAgICAgLy8gd2hlbiBtYWtpbmcg
dGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwpAQCAt
MTMzLDcgKzE4MSw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gK
ICAgICAgICAgCiAgICAgICAgIHNldFByb3BlcnRpZXMoKTsKICAgICAgICAgCi0gICAgICAgIGFy
cmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgMCwganNTdWJzdHJpbmdP
ZlJlc29sdmVkKHZtLCAmZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1
bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgIGFy
cmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihtYXRjaGVzQXJyYXlTY29wZSwgMCwg
anNTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCAmZGVmZXJyYWxDb250ZXh0LCBpbnB1dCwgcmVzdWx0
LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7
CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRl
cm5zOyArK2kpIHsKICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIg
KiBpXTsKQEAgLTE0MiwyMSArMTkwLDM2IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRl
UmVnRXhwTWF0Y2gKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzU3Vic3RyaW5nT2ZSZXNvbHZl
ZCh2bSwgJmRlZmVycmFsQ29udGV4dCwgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1sy
ICogaSArIDFdIC0gc3RhcnQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZh
bHVlID0ganNVbmRlZmluZWQoKTsKLSAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXhX
aXRob3V0QmFycmllcihzY29wZSwgaSwgdmFsdWUsIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAg
ICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKG1hdGNoZXNBcnJh
eVNjb3BlLCBpLCB2YWx1ZSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoY3JlYXRlSW5kaWNlcykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0
ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWU7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAg
IGluZGljZXNBcnJheS0+aW5pdGlhbGl6ZUluZGV4V2l0aG91dEJhcnJpZXIoaW5kaWNlc0FycmF5
U2NvcGUsIGksIGNyZWF0ZUluZGV4QXJyYXkoZGVmZXJyYWxDb250ZXh0LCBzdGFydCwgc3VicGF0
dGVyblJlc3VsdHNbMiAqIGkgKyAxXSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgaW5kaWNlc0FycmF5LT5pbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihp
bmRpY2VzQXJyYXlTY29wZSwgaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICAvLyBOb3cgdGhlIG9iamVjdCBpcyBzYWZlIHRvIHNjYW4gYnkg
R0MuCiAKLSAgICAvLyBXZSBpbml0aWFsaXplIHRoZSBncm91cHMgb2JqZWN0IGxhdGUgYXMgaXQg
Y291bGQgYWxsb2NhdGUsIHdoaWNoIHdpdGggdGhlIGN1cnJlbnQgQVBJIGNvdWxkIGNhdXNlCisg
ICAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZ3JvdXBzIGFuZCBpbmRpY2VzIG9iamVjdHMgbGF0ZSBh
cyB0aGV5IGNvdWxkIGFsbG9jYXRlLCB3aGljaCB3aXRoIHRoZSBjdXJyZW50IEFQSSBjb3VsZCBj
YXVzZQogICAgIC8vIGFsbG9jYXRpb25zLgogICAgIGlmIChoYXNOYW1lZENhcHR1cmVzKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgewog
ICAgICAgICAgICAgU3RyaW5nIGdyb3VwTmFtZSA9IHJlZ0V4cC0+Z2V0Q2FwdHVyZUdyb3VwTmFt
ZShpKTsKLSAgICAgICAgICAgIGlmICghZ3JvdXBOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGlmICghZ3JvdXBOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGdyb3Vwcy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBncm91cE5hbWUpLCBhcnJheS0+
Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAgICAgICAgICBpZiAoY3JlYXRlSW5kaWNlcykK
KyAgICAgICAgICAgICAgICAgICAgaW5kaWNlc0dyb3Vwcy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBncm91cE5hbWUpLCBpbmRpY2VzQXJyYXktPmdldEluZGV4UXVp
Y2tseShpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4g
YXJyYXk7CiB9CiAKQEAgLTE3Myw2ICsyMzYsMTAgQEAgaW5saW5lIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheQogfQogSlNBcnJheSogY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzQXJy
YXkoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCopOwogU3RydWN0dXJlKiBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOworU3Ry
dWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNlc1N0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNJbmRpY2Vz
QXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogU3RydWN0dXJlKiBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
K1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGljZXNTbG93UHV0U3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0
Y2hlc0luZGljZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0Z1bmNDb21w
aWxlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuY1Rv
U3RyaW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0
dGVyR2xvYmFsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3Rv
R2V0dGVySGFzSW5kaWNlcyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQcm90b0dldHRlcklnbm9yZUNhc2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04ocmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwpOwpAQCAtNjQsNiArNjUsNyBAQCB2b2lk
IFJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHJlZ0V4
cFByb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmdsb2JhbCwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7
CiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmRvdEFsbCwgcmVnRXhwUHJvdG9HZXR0ZXJEb3RBbGwsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CisgICAgSlNDX05BVElWRV9H
RVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc0luZGljZXMsIHJl
Z0V4cFByb3RvR2V0dGVySGFzSW5kaWNlcywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSwgcmVnRXhwUHJvdG9H
ZXR0ZXJJZ25vcmVDYXNlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUsIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGls
aW5lLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpOwogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5zdGlja3ksIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpAQCAtMTcwLDYg
KzE3Miw4IEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJpbmcoSlMKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCisgICAgSlNWYWx1ZSBpbmRpY2VzVmFsdWUgPSByZWdleHAtPmdldChn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luZGljZXMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHN0cmluZyk7CiAgICAgSlNWYWx1ZSBnbG9iYWxWYWx1ZSA9IHJl
Z2V4cC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzdHJpbmcpOwogICAgIEpTVmFsdWUgaWdub3JlQ2Fz
ZVZhbHVlID0gcmVnZXhwLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5pZ25v
cmVDYXNlKTsKQEAgLTE4NCw2ICsxODgsOCBAQCBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5nIGZs
YWdzU3RyaW5nKEpTCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RyaW5nKTsKIAog
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBpZiAoaW5kaWNlc1ZhbHVlLnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpKQorICAgICAgICBzdHJpbmdbaW5kZXgrK10gPSAnZCc7CiAgICAgaWYgKGds
b2JhbFZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKQogICAgICAgICBzdHJpbmdbaW5kZXgr
K10gPSAnZyc7CiAgICAgaWYgKGlnbm9yZUNhc2VWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KSkKQEAgLTI0Nyw2ICsyNTMsMjIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFBy
b3RvR2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVn
RXhwKCktPmdsb2JhbCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0dldHRlckhhc0luZGljZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvKiByZWdleHAgPSBq
c0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOworICAgIGlmIChVTkxJ
S0VMWSghcmVnZXhwKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+
cmVnRXhwUHJvdG90eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaGFzSW5kaWNlcyBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgfQorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+aGFzSW5kaWNlcygp
KSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlcklnbm9y
ZUNhc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCShyZXZpc2lvbiAyNzMwMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNywxMiBAQCBPcHRpb25hbDxPcHRpb25TZXQ8RmxhZ3M+PiBwYXJzZUZsYWdzKFN0CiAg
ICAgT3B0aW9uU2V0PEZsYWdzPiBmbGFnczsKICAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc3Ry
aW5nLmNvZGVVbml0cygpKSB7CiAgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgICAg
IGNhc2UgJ2QnOgorICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpIYXNJbmRp
Y2VzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ZmxhZ3MuYWRkKEZsYWdzOjpIYXNJbmRpY2VzKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAg
ICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpHbG9i
YWwpKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuaAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDggQEAgZW51bSBjbGFzcyBGbGFncyA6IHVpbnQ4X3QgewogICAgIFN0aWNreSA9IDEgPDwg
MywKICAgICBVbmljb2RlID0gMSA8PCA0LAogICAgIERvdEFsbCA9IDEgPDwgNSwKLSAgICBEZWxl
dGVkVmFsdWUgPSAxIDw8IDYKKyAgICBIYXNJbmRpY2VzID0gMSA8PCA2LAorICAgIERlbGV0ZWRW
YWx1ZSA9IDEgPDwgNwogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8T3B0aW9uU2V0
PEZsYWdzPj4gcGFyc2VGbGFncyhTdHJpbmdWaWV3KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCShyZXZpc2lvbiAyNzMwMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcxLDYgKzM3MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlnbm9yZUNhc2UoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpJZ25vcmVDYXNlKTsgfQogICAg
IGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6
TXVsdGlsaW5lKTsgfQorICAgIGJvb2wgaGFzSW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MuY29udGFpbnMoRmxhZ3M6Okhhc0luZGljZXMpOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpTdGlja3kpOyB9CiAgICAgYm9vbCB1
bmljb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6VW5pY29kZSk7
IH0KICAgICBib29sIGRvdEFsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxh
Z3M6OkRvdEFsbCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRl
cm4uaAkocmV2aXNpb24gMjczMDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtNTI0LDYgKzUyNCw3IEBAIHN0cnVjdCBZYXJy
UGF0dGVybiB7CiAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRh
aW5zKEZsYWdzOjpHbG9iYWwpOyB9CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6SWdub3JlQ2FzZSk7IH0KICAgICBib29sIG11bHRp
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Ok11bHRpbGluZSk7
IH0KKyAgICBib29sIGhhc0luZGljZXMoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5z
KEZsYWdzOjpIYXNJbmRpY2VzKTsgfQogICAgIGJvb2wgc3RpY2t5KCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncy5jb250YWlucyhGbGFnczo6U3RpY2t5KTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OlVuaWNvZGUpOyB9CiAgICAgYm9v
bCBkb3RBbGwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpEb3RBbGwp
OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMwMzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMi0xNyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgUmVnRXhw
IE1hdGNoIEluZGljZXMgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVnZXhwLW5hbWVk
LWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qczoKKwogMjAyMS0wMi0xNyAgQ2hyaXMgR2Ft
YnJlbGwgIDxjZ2FtYnJlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFtMYXlvdXRUZXN0c10gQ29u
dmVydCBodHRwL3Rlc3RzL3ByZWNvbm5lY3QgY29udmVydCBQSFAgdG8gUHl0aG9uCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzMwMzApCisrKyBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE51bWJlci5wcgogUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKERhdGUpIGlzIFsnVVRDJywgJ2xlbmd0aCcsICduYW1lJywg
J25vdycsICdwYXJzZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKERhdGUucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5
JywgJ2dldEZ1bGxZZWFyJywgJ2dldEhvdXJzJywgJ2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51
dGVzJywgJ2dldE1vbnRoJywgJ2dldFNlY29uZHMnLCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9m
ZnNldCcsICdnZXRVVENEYXRlJywgJ2dldFVUQ0RheScsICdnZXRVVENGdWxsWWVhcicsICdnZXRV
VENIb3VycycsICdnZXRVVENNaWxsaXNlY29uZHMnLCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENN
b250aCcsICdnZXRVVENTZWNvbmRzJywgJ2dldFllYXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVh
cicsICdzZXRIb3VycycsICdzZXRNaWxsaXNlY29uZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250
aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAnc2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVh
cicsICdzZXRVVENIb3VycycsICdzZXRVVENNaWxsaXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycs
ICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRzJywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5n
JywgJ3RvR01UU3RyaW5nJywgJ3RvSVNPU3RyaW5nJywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVT
dHJpbmcnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9Mb2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5n
JywgJ3RvVGltZVN0cmluZycsICd0b1VUQ1N0cmluZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhSZWdFeHApIGlzIFsnJCYnLCAiJCciLCAnJConLCAnJCsnLCAn
JDEnLCAnJDInLCAnJDMnLCAnJDQnLCAnJDUnLCAnJDYnLCAnJDcnLCAnJDgnLCAnJDknLCAnJF8n
LCAnJGAnLCAnaW5wdXQnLCAnbGFzdE1hdGNoJywgJ2xhc3RQYXJlbicsICdsZWZ0Q29udGV4dCcs
ICdsZW5ndGgnLCAnbXVsdGlsaW5lJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3JpZ2h0Q29udGV4
dCddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMg
Wydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2RvdEFsbCcsICdleGVjJywgJ2ZsYWdzJywgJ2ds
b2JhbCcsICdpZ25vcmVDYXNlJywgJ211bHRpbGluZScsICdzb3VyY2UnLCAnc3RpY2t5JywgJ3Rl
c3QnLCAndG9TdHJpbmcnLCAndW5pY29kZSddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoUmVnRXhwLnByb3RvdHlwZSkgaXMgWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2RvdEFs
bCcsICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdoYXNJbmRpY2VzJywgJ2lnbm9yZUNhc2Un
LCAnbXVsdGlsaW5lJywgJ3NvdXJjZScsICdzdGlja3knLCAndGVzdCcsICd0b1N0cmluZycsICd1
bmljb2RlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvcikgaXMgWydsZW5n
dGgnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc3RhY2tUcmFjZUxpbWl0J10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAn
bWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NR
UlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4n
LCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAn
LCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCds
b2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdz
aW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3MzAzMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ2V4cC1uYW1lZC1jYXB0
dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDI0ICsxNCwzNCBA
QCBQQVNTIG1hdGNoUmVzdWx0MVswXSBpcyAiMDEvMDIvMjAwMSIKIFBBU1MgbWF0Y2hSZXN1bHQx
Lmdyb3Vwcy5tb250aCBpcyAiMDEiCiBQQVNTIG1hdGNoUmVzdWx0MS5ncm91cHMuZGF5IGlzICIw
MiIKIFBBU1MgbWF0Y2hSZXN1bHQxLmdyb3Vwcy55ZWFyIGlzICIyMDAxIgotUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIs
IjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVuZ3RoIl0KK1BBU1MgbWF0Y2hSZXN1bHQx
LmluZGljZXMuZ3JvdXBzLm1vbnRoIGlzIFswLDJdCitQQVNTIG1hdGNoUmVzdWx0MS5pbmRpY2Vz
Lmdyb3Vwcy5kYXkgaXMgWzMsNV0KK1BBU1MgbWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBzLnll
YXIgaXMgWzYsMTBdCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0
MSkuc29ydCgpIGlzIFsiMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIs
ImlucHV0IiwibGVuZ3RoIl0KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hS
ZXN1bHQxLmdyb3Vwcykuc29ydCgpIGlzIFsiZGF5IiwibW9udGgiLCJ5ZWFyIl0KK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxLmluZGljZXMuZ3JvdXBzKS5zb3J0
KCkgaXMgWyJkYXkiLCJtb250aCIsInllYXIiXQogUEFTUyBtYXRjaFJlc3VsdDJhWzBdIGlzICJK
b2huIFcuIFNtaXRoIgogUEFTUyBtYXRjaFJlc3VsdDJhWzFdIGlzICJKb2huIgogUEFTUyBtYXRj
aFJlc3VsdDJhWzJdIGlzICJXLiIKIFBBU1MgbWF0Y2hSZXN1bHQyYVszXSBpcyAiU21pdGgiCitQ
QVNTIG1hdGNoUmVzdWx0MmEuaW5kaWNlc1sxXSBpcyBbMCw0XQorUEFTUyBtYXRjaFJlc3VsdDJh
LmluZGljZXNbMl0gaXMgWzUsN10KK1BBU1MgbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzNdIGlzIFs4
LDEzXQogUEFTUyBtYXRjaFJlc3VsdDJhWzFdIGlzIG1hdGNoUmVzdWx0MmEuZ3JvdXBzLmZpcnN0
X25hbWUKIFBBU1MgbWF0Y2hSZXN1bHQyYVsyXSBpcyBtYXRjaFJlc3VsdDJhLmdyb3Vwcy5taWRk
bGVfaW5pdGlhbAogUEFTUyBtYXRjaFJlc3VsdDJhWzNdIGlzIG1hdGNoUmVzdWx0MmEuZ3JvdXBz
Lmxhc3RfbmFtZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEp
LnNvcnQoKSBpcyBbIjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImlucHV0IiwibGVu
Z3RoIl0KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0
KCkgaXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbmRpY2VzIiwiaW5wdXQi
LCJsZW5ndGgiXQogUEFTUyBtYXRjaFJlc3VsdDJiWzBdIGlzICJTYWxseSBCcm93biIKIFBBU1Mg
bWF0Y2hSZXN1bHQyYlsxXSBpcyAiU2FsbHkiCiBQQVNTIG1hdGNoUmVzdWx0MmJbMl0gaXMgdW5k
ZWZpbmVkLgogUEFTUyBtYXRjaFJlc3VsdDJiWzNdIGlzICJCcm93biIKK1BBU1MgbWF0Y2hSZXN1
bHQyYi5pbmRpY2VzWzFdIGlzIFswLDVdCitQQVNTIG1hdGNoUmVzdWx0MmIuaW5kaWNlc1syXSBp
cyB1bmRlZmluZWQuCitQQVNTIG1hdGNoUmVzdWx0MmIuaW5kaWNlc1szXSBpcyBbNiwxMV0KIFBB
U1MgbWF0Y2hSZXN1bHQyYlsxXSBpcyBtYXRjaFJlc3VsdDJiLmdyb3Vwcy5maXJzdF9uYW1lCiBQ
QVNTIG1hdGNoUmVzdWx0MmJbMl0gaXMgbWF0Y2hSZXN1bHQyYi5ncm91cHMubWlkZGxlX2luaXRp
YWwKIFBBU1MgbWF0Y2hSZXN1bHQyYlszXSBpcyBtYXRjaFJlc3VsdDJiLmdyb3Vwcy5sYXN0X25h
bWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQxKS5zb3J0KCkg
aXMgWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1dCIsImxlbmd0aCJdCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpIGlzIFsi
MCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIsImlucHV0IiwibGVuZ3Ro
Il0KIFBBU1MgcmUzLnRvU3RyaW5nKCkgaXMgIlwvXig/PHBhcnQxPi4qKTooPzxwYXJ0Mj4uKik6
XFxrPHBhcnQyPjpcXGs8cGFydDE+JFwvIgogUEFTUyByZTMudGVzdCgiYTpiOmI6YSIpIGlzIHRy
dWUKIFBBU1MgcmUzLnRlc3QoImE6YTphOmEiKSBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LmpzCShyZXZpc2lvbiAyNzMwMzApCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcg
QEAgdmFyIGV4cGVjdGVkUHJvcGVydHlOYW1lc1NldCA9IHsKICAgICAiRGF0ZSI6ICJbJ1VUQycs
ICdsZW5ndGgnLCAnbmFtZScsICdub3cnLCAncGFyc2UnLCAncHJvdG90eXBlJ10iLAogICAgICJE
YXRlLnByb3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dl
dEZ1bGxZZWFyJywgJ2dldEhvdXJzJywgJ2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywg
J2dldE1vbnRoJywgJ2dldFNlY29uZHMnLCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcs
ICdnZXRVVENEYXRlJywgJ2dldFVUQ0RheScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3Vy
cycsICdnZXRVVENNaWxsaXNlY29uZHMnLCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcs
ICdnZXRVVENTZWNvbmRzJywgJ2dldFllYXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdz
ZXRIb3VycycsICdzZXRNaWxsaXNlY29uZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdz
ZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAnc2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdz
ZXRVVENIb3VycycsICdzZXRVVENNaWxsaXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRV
VENNb250aCcsICdzZXRVVENTZWNvbmRzJywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3Rv
R01UU3RyaW5nJywgJ3RvSVNPU3RyaW5nJywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcn
LCAndG9Mb2NhbGVTdHJpbmcnLCAndG9Mb2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3Rv
VGltZVN0cmluZycsICd0b1VUQ1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJSZWdFeHAiOiAi
WyckJicsIFwiJCdcIiwgJyQqJywgJyQrJywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1Jywg
JyQ2JywgJyQ3JywgJyQ4JywgJyQ5JywgJyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcs
ICdsYXN0UGFyZW4nLCAnbGVmdENvbnRleHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1l
JywgJ3Byb3RvdHlwZScsICdyaWdodENvbnRleHQnXSIsCi0gICAgIlJlZ0V4cC5wcm90b3R5cGUi
OiAiWydjb21waWxlJywgJ2NvbnN0cnVjdG9yJywgJ2RvdEFsbCcsICdleGVjJywgJ2ZsYWdzJywg
J2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ211bHRpbGluZScsICdzb3VyY2UnLCAnc3RpY2t5Jywg
J3Rlc3QnLCAndG9TdHJpbmcnLCAndW5pY29kZSddIiwKKyAgICAiUmVnRXhwLnByb3RvdHlwZSI6
ICJbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZG90QWxsJywgJ2V4ZWMnLCAnZmxhZ3MnLCAn
Z2xvYmFsJywgJ2hhc0luZGljZXMnLCAnaWdub3JlQ2FzZScsICdtdWx0aWxpbmUnLCAnc291cmNl
JywgJ3N0aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXSIsCiAgICAgIkVycm9y
IjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3N0YWNrVHJhY2VMaW1pdCddIiwK
ICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnbWVzc2FnZScsICduYW1l
JywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsnRScsJ0xOMTAnLCdMTjInLCdMT0cxMEUn
LCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycsJ2Fjb3NoJywnYXNp
bicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2VpbCcsJ2NsejMyJywn
Y29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdoeXBvdCcsJ2ltdWwn
LCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3BvdycsJ3JhbmRvbScs
J3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFuaCcsJ3RydW5jJ10i
LApJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJl
LWdyb3Vwcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzCShyZXZpc2lvbiAyNzMwMzApCisrKyBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNSwyNSArMTUsMzIgQEAgc2hvdWxkQmUoJ2V4ZWNSZXN1bHQxLmdyb3Vw
cy55ZWFyJywgJyIyMAogc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGV4ZWNS
ZXN1bHQxKS5zb3J0KCknLCAnWyIwIiwiMSIsIjIiLCIzIiwiZ3JvdXBzIiwiaW5kZXgiLCJpbnB1
dCIsImxlbmd0aCJdJyk7CiBzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXhl
Y1Jlc3VsdDEuZ3JvdXBzKS5zb3J0KCknLCAnWyJkYXkiLCJtb250aCIsInllYXIiXScpOwogCi12
YXIgbWF0Y2hSZXN1bHQxID0gc3JjMS5tYXRjaChyZTEpOwordmFyIG1hdGNoUmVzdWx0MSA9IHNy
YzEubWF0Y2gobmV3IFJlZ0V4cChyZTEsICdkJykpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MVsw
XScsICciMDEvMDIvMjAwMSInKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDEuZ3JvdXBzLm1vbnRo
JywgJyIwMSInKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDEuZ3JvdXBzLmRheScsICciMDIiJyk7
CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQxLmdyb3Vwcy55ZWFyJywgJyIyMDAxIicpOwotc2hvdWxk
QmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpJywgJ1si
MCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXScpOworc2hv
dWxkQmUoJ21hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5tb250aCcsICdbMCwyXScpOworc2hv
dWxkQmUoJ21hdGNoUmVzdWx0MS5pbmRpY2VzLmdyb3Vwcy5kYXknLCAnWzMsNV0nKTsKK3Nob3Vs
ZEJlKCdtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMueWVhcicsICdbNiwxMF0nKTsKK3Nob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEpLnNvcnQoKScsICdb
IjAiLCIxIiwiMiIsIjMiLCJncm91cHMiLCJpbmRleCIsImluZGljZXMiLCJpbnB1dCIsImxlbmd0
aCJdJyk7CiBzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWF0Y2hSZXN1bHQx
Lmdyb3Vwcykuc29ydCgpJywgJ1siZGF5IiwibW9udGgiLCJ5ZWFyIl0nKTsKK3Nob3VsZEJlKCdP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtYXRjaFJlc3VsdDEuaW5kaWNlcy5ncm91cHMpLnNv
cnQoKScsICdbImRheSIsIm1vbnRoIiwieWVhciJdJyk7CiAKLXZhciByZTIgPSAvKD88Zmlyc3Rf
bmFtZT5cdyspXHMoPzooPzxtaWRkbGVfaW5pdGlhbD5cd1wuKVxzKT8oPzxsYXN0X25hbWU+XHcr
KS87Cit2YXIgcmUyID0gLyg/PGZpcnN0X25hbWU+XHcrKVxzKD86KD88bWlkZGxlX2luaXRpYWw+
XHdcLilccyk/KD88bGFzdF9uYW1lPlx3KykvZDsKIHZhciBtYXRjaFJlc3VsdDJhID0gIkpvaG4g
Vy4gU21pdGgiLm1hdGNoKHJlMik7CiAKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzBdJywgJyJK
b2huIFcuIFNtaXRoIicpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMV0nLCAnIkpvaG4iJyk7
CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYVsyXScsICciVy4iJyk7CiBzaG91bGRCZSgnbWF0Y2hS
ZXN1bHQyYVszXScsICciU21pdGgiJyk7CitzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYS5pbmRpY2Vz
WzFdJywgJ1swLDRdJyk7CitzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzJdJywgJ1s1
LDddJyk7CitzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYS5pbmRpY2VzWzNdJywgJ1s4LDEzXScpOwog
c2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMV0nLCAnbWF0Y2hSZXN1bHQyYS5ncm91cHMuZmlyc3Rf
bmFtZScpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmFbMl0nLCAnbWF0Y2hSZXN1bHQyYS5ncm91
cHMubWlkZGxlX2luaXRpYWwnKTsKIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJhWzNdJywgJ21hdGNo
UmVzdWx0MmEuZ3JvdXBzLmxhc3RfbmFtZScpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdyb3Vw
cyIsImluZGV4IiwiaW5wdXQiLCJsZW5ndGgiXScpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdy
b3VwcyIsImluZGV4IiwiaW5kaWNlcyIsImlucHV0IiwibGVuZ3RoIl0nKTsKIAogLy8gVmVyaWZ5
IHRoYXQgbmFtZWQgZ3JvdXBzIHRoYXQgYXJlbid0IG1hdGNoZWQgYXJlIHVuZGVmaW5lZC4KIHZh
ciBtYXRjaFJlc3VsdDJiID0gIlNhbGx5IEJyb3duIi5tYXRjaChyZTIpOwpAQCAtNDIsMTAgKzQ5
LDEzIEBAIHNob3VsZEJlKCdtYXRjaFJlc3VsdDJiWzBdJywgJyJTYWxseSBCcm8KIHNob3VsZEJl
KCdtYXRjaFJlc3VsdDJiWzFdJywgJyJTYWxseSInKTsKIHNob3VsZEJlVW5kZWZpbmVkKCdtYXRj
aFJlc3VsdDJiWzJdJyk7CiBzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYlszXScsICciQnJvd24iJyk7
CitzaG91bGRCZSgnbWF0Y2hSZXN1bHQyYi5pbmRpY2VzWzFdJywgJ1swLDVdJyk7CitzaG91bGRC
ZVVuZGVmaW5lZCgnbWF0Y2hSZXN1bHQyYi5pbmRpY2VzWzJdJyk7CitzaG91bGRCZSgnbWF0Y2hS
ZXN1bHQyYi5pbmRpY2VzWzNdJywgJ1s2LDExXScpOwogc2hvdWxkQmUoJ21hdGNoUmVzdWx0MmJb
MV0nLCAnbWF0Y2hSZXN1bHQyYi5ncm91cHMuZmlyc3RfbmFtZScpOwogc2hvdWxkQmUoJ21hdGNo
UmVzdWx0MmJbMl0nLCAnbWF0Y2hSZXN1bHQyYi5ncm91cHMubWlkZGxlX2luaXRpYWwnKTsKIHNo
b3VsZEJlKCdtYXRjaFJlc3VsdDJiWzNdJywgJ21hdGNoUmVzdWx0MmIuZ3JvdXBzLmxhc3RfbmFt
ZScpOwotc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0MSku
c29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5wdXQiLCJsZW5n
dGgiXScpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1hdGNoUmVzdWx0
MSkuc29ydCgpJywgJ1siMCIsIjEiLCIyIiwiMyIsImdyb3VwcyIsImluZGV4IiwiaW5kaWNlcyIs
ImlucHV0IiwibGVuZ3RoIl0nKTsKIAogLy8gVmVyaWZ5IHRoYXQgbmFtZWQgYmFja3JlZmVyZW5j
ZXMgd29yay4KIHZhciByZTMgPSAvXig/PHBhcnQxPi4qKTooPzxwYXJ0Mj4uKik6XGs8cGFydDI+
OlxrPHBhcnQxPiQvOwo=
</data>
<flag name="review"
          id="439511"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>