<?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>234604</bug_id>
          
          <creation_ts>2021-12-22 07:59:49 -0800</creation_ts>
          <short_desc>Implement Change Array by copy proposal</short_desc>
          <delta_ts>2022-04-12 10:56:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://tc39.es/proposal-change-array-by-copy/#sec-properties-of-the-array-prototype-object</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditi Singh">asingh</reporter>
          <assigned_to name="Aditi Singh">asingh</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</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>1826299</commentid>
    <comment_count>0</comment_count>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2021-12-22 07:59:49 -0800</bug_when>
    <thetext>Proposal Change Array by copy provides additional methods on `Array.prototype` and `TypedArray.prototype` to enable changes on the array by returning a new copy of it with the change.

Proposal: https://github.com/tc39/proposal-change-array-by-copy
Spec: https://tc39.es/proposal-change-array-by-copy/#sec-properties-of-the-array-prototype-object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827171</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-29 08:00:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/86984042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832995</commentid>
    <comment_count>2</comment_count>
      <attachid>449727</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-01-22 02:00:05 -0800</bug_when>
    <thetext>Created attachment 449727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832997</commentid>
    <comment_count>3</comment_count>
      <attachid>449729</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-01-22 02:20:54 -0800</bug_when>
    <thetext>Created attachment 449729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833011</commentid>
    <comment_count>4</comment_count>
      <attachid>449729</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-22 07:38:24 -0800</bug_when>
    <thetext>Comment on attachment 449729
Patch

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

Great job, I appreciate the 1:1 precision with the spec. It&apos;s a bit uneasy to find matching bytecodes / helpers for all the abstract ops, but you did that perfectly!

I will put a r+ once we sort out the @arraySortHelper.

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +

nit: Could you please link the proposal in ChangeLog? And possibly mention results of microbenchmarks OR why a LinkTimeConstant is added?

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:591
&gt; +    return @arraySortHelper(this, comparator);

While this call will most likely be inlined by DFG / FTL, I&apos;m a bit worried of performance effect for lower tiers.
Could you please either a) run microbenchmarks or rather b) @call Array.prototype.sort in toSorted()?

To a) run the benchmarks:

JSC_useJIT=false Tools/Scripts/run-jsc-benchmarks trunk:../path/to/WebKit/WebKitBuild/Release/jsc patch:../path/to/another/WebKit/WebKitBuild/Release/jsc --benchmarks &apos;sort&apos; --outer 50
JSC_useDFGJIT=false Tools/Scripts/run-jsc-benchmarks trunk:../path/to/WebKit/WebKitBuild/Release/jsc patch:../path/to/another/WebKit/WebKitBuild/Release/jsc --benchmarks &apos;sort&apos; --outer 50

Option b) is a bit more tricky: we need to expose Array.prototype.sort as a global private as well, while preferably avoiding creation of a second JSFunction*.
I suggest adding a LinkTimeConstant &quot;arraySort&quot; and initializing it in JSGlobalObject::init() the same way it&apos;s done for vm.propertyNames-&gt;hasOwnProperty, ending up with `@arraySort.@call(result, comparefn)` in toSorted().

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:806
&gt; +    var O = @toObject(this, &quot;Array.prototype.toReversed requires that |this| not be null or undefined&quot;);

nit: I believe we don&apos;t do single-char variable names (with an exception for iteration vars) even to match the spec. &quot;object&quot; perhaps?

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:950
&gt; +        if(k === actualIndex)

nit: missing space

&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:489
&gt; +        dc = dc &gt; 0 ? dc : 0;

nit: maybe &quot;tempDeleteCount&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833059</commentid>
    <comment_count>5</comment_count>
      <attachid>449729</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-22 16:27:30 -0800</bug_when>
    <thetext>Comment on attachment 449729
Patch

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

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:590
&gt; +{

When defining a new function, let&apos;s put &quot;use strict&quot; to ensure it is strict code.

&gt;&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:591
&gt;&gt; +    return @arraySortHelper(this, comparator);
&gt; 
&gt; While this call will most likely be inlined by DFG / FTL, I&apos;m a bit worried of performance effect for lower tiers.
&gt; Could you please either a) run microbenchmarks or rather b) @call Array.prototype.sort in toSorted()?
&gt; 
&gt; To a) run the benchmarks:
&gt; 
&gt; JSC_useJIT=false Tools/Scripts/run-jsc-benchmarks trunk:../path/to/WebKit/WebKitBuild/Release/jsc patch:../path/to/another/WebKit/WebKitBuild/Release/jsc --benchmarks &apos;sort&apos; --outer 50
&gt; JSC_useDFGJIT=false Tools/Scripts/run-jsc-benchmarks trunk:../path/to/WebKit/WebKitBuild/Release/jsc patch:../path/to/another/WebKit/WebKitBuild/Release/jsc --benchmarks &apos;sort&apos; --outer 50
&gt; 
&gt; Option b) is a bit more tricky: we need to expose Array.prototype.sort as a global private as well, while preferably avoiding creation of a second JSFunction*.
&gt; I suggest adding a LinkTimeConstant &quot;arraySort&quot; and initializing it in JSGlobalObject::init() the same way it&apos;s done for vm.propertyNames-&gt;hasOwnProperty, ending up with `@arraySort.@call(result, comparefn)` in toSorted().

Agreed. In (a) and (b), I think (b) is better.

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:908
&gt; +    for (var i = 0; i &lt; insertCount; i++, k++) {
&gt; +        @putByValDirect(result, k, arguments[i + 2]);
&gt; +    }

Let&apos;s remove {}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836033</commentid>
    <comment_count>6</comment_count>
      <attachid>450543</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-02-01 10:04:09 -0800</bug_when>
    <thetext>Created attachment 450543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836044</commentid>
    <comment_count>7</comment_count>
      <attachid>450543</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-01 10:21:21 -0800</bug_when>
    <thetext>Comment on attachment 450543
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1334
&gt; +        JSValue arraySort = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;get(this, vm.propertyNames-&gt;builtinNames().sortPublicName()));

vm.propertyNames-&gt;builtinNames().sortPublicName() should be the same as vm.propertyNames-&gt;sort, and they are both public identifiers, meaning userland code can delete them and break newly added methods (if we implement helpers via initLater()).
A nice example for setting up both public and private identifiers would be arrayProtoFuncShift in ArrayPrototype::finishCreation().

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1340
&gt; +        JSValue typedArrayPrototypeSort = jsCast&lt;JSFunction*&gt;(typedArrayViewPrototype()-&gt;get(this, vm.propertyNames-&gt;sort));

Doesn&apos;t this line initialize TypedArrayPrototype? It&apos;s quite large and not very commonly used on the web, so we would prefer avoiding eager init.
Could you please implement @typedArrayPrototypeSort (and @arraySort along with it, purely for consistency) via initLater()?
arrayPrototype() can be accessed from `jsCast&lt;JSGlobalObject*&gt;(init.owner)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836047</commentid>
    <comment_count>8</comment_count>
      <attachid>450543</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-01 10:27:03 -0800</bug_when>
    <thetext>Comment on attachment 450543
Patch

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

This is really nice!

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1334
&gt;&gt; +        JSValue arraySort = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;get(this, vm.propertyNames-&gt;builtinNames().sortPublicName()));
&gt; 
&gt; vm.propertyNames-&gt;builtinNames().sortPublicName() should be the same as vm.propertyNames-&gt;sort, and they are both public identifiers, meaning userland code can delete them and break newly added methods (if we implement helpers via initLater()).
&gt; A nice example for setting up both public and private identifiers would be arrayProtoFuncShift in ArrayPrototype::finishCreation().

Let&apos;s do the same to the below&apos;s my comment.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1340
&gt;&gt; +        JSValue typedArrayPrototypeSort = jsCast&lt;JSFunction*&gt;(typedArrayViewPrototype()-&gt;get(this, vm.propertyNames-&gt;sort));
&gt; 
&gt; Doesn&apos;t this line initialize TypedArrayPrototype? It&apos;s quite large and not very commonly used on the web, so we would prefer avoiding eager init.
&gt; Could you please implement @typedArrayPrototypeSort (and @arraySort along with it, purely for consistency) via initLater()?
&gt; arrayPrototype() can be accessed from `jsCast&lt;JSGlobalObject*&gt;(init.owner)`.

Right. I suggest the following.

1. Defining sort function as m_linkTimeConstants&apos; lazy function.
2. Defining `JSGlobalObject::typedArrayProtoSortFunction()` getter which returns it.
3. Use that getter in TypedArrayPrototype&apos;s creation.

So, we can set this function in LinkTimeConstant while we avoid earger materialization here.
There are several existing examles, `m_objectProtoToStringFunction` etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836113</commentid>
    <comment_count>9</comment_count>
      <attachid>450543</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-02-01 13:07:36 -0800</bug_when>
    <thetext>Comment on attachment 450543
Patch

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

Cool!

&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:434
&gt; +        @throwTypeError(&quot;TypedArray.prototype.toSorted requires the comparefn argument to be a function or undefined&quot;);

The Array version says &quot;the comparator argument&quot; which sounds better than `comparefn argument`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836856</commentid>
    <comment_count>10</comment_count>
      <attachid>450543</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-03 04:02:44 -0800</bug_when>
    <thetext>Comment on attachment 450543
Patch

Many failing tests. Need another try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838239</commentid>
    <comment_count>11</comment_count>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-02-07 10:34:34 -0800</bug_when>
    <thetext>&gt; 1. Defining sort function as m_linkTimeConstants&apos; lazy function.
&gt; 2. Defining `JSGlobalObject::typedArrayProtoSortFunction()` getter which returns it.
&gt; 3. Use that getter in TypedArrayPrototype&apos;s creation.

I followed these steps, and defined a m_linkTimeConstants&apos; lazy function for `TypedArray.prototype.sort()`. But I am curious, why do we need to define a LinkTimeConstant for sort? 
If we expose `TypedArray.prototype.sort()` as a globalPrivate and use it as 
`@sort.@call(array, comparefn)` in `TypedArray.prototype.toSorted()`, the modifications in userland code don&apos;t seem to affect the `TypedArray.prototype.toSorted()` function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838243</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 10:40:12 -0800</bug_when>
    <thetext>(In reply to Aditi Singh from comment #11)
&gt; &gt; 1. Defining sort function as m_linkTimeConstants&apos; lazy function.
&gt; &gt; 2. Defining `JSGlobalObject::typedArrayProtoSortFunction()` getter which returns it.
&gt; &gt; 3. Use that getter in TypedArrayPrototype&apos;s creation.
&gt; 
&gt; I followed these steps, and defined a m_linkTimeConstants&apos; lazy function for
&gt; `TypedArray.prototype.sort()`. But I am curious, why do we need to define a
&gt; LinkTimeConstant for sort? 
&gt; If we expose `TypedArray.prototype.sort()` as a globalPrivate and use it as 
&gt; `@sort.@call(array, comparefn)` in `TypedArray.prototype.toSorted()`, the
&gt; modifications in userland code don&apos;t seem to affect the
&gt; `TypedArray.prototype.toSorted()` function.

Because @globalPrivate does not define `sort` prototype function.
You need to have

function sort(...)
{
    return @sort(...)
}

and it is slower than our suggested way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842364</commentid>
    <comment_count>13</comment_count>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-02-16 10:21:00 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; (In reply to Aditi Singh from comment #11)
&gt; &gt; &gt; 1. Defining sort function as m_linkTimeConstants&apos; lazy function.
&gt; &gt; &gt; 2. Defining `JSGlobalObject::typedArrayProtoSortFunction()` getter which returns it.
&gt; &gt; &gt; 3. Use that getter in TypedArrayPrototype&apos;s creation.
&gt; &gt; 
&gt; &gt; I followed these steps, and defined a m_linkTimeConstants&apos; lazy function for
&gt; &gt; `TypedArray.prototype.sort()`. But I am curious, why do we need to define a
&gt; &gt; LinkTimeConstant for sort? 
&gt; &gt; If we expose `TypedArray.prototype.sort()` as a globalPrivate and use it as 
&gt; &gt; `@sort.@call(array, comparefn)` in `TypedArray.prototype.toSorted()`, the
&gt; &gt; modifications in userland code don&apos;t seem to affect the
&gt; &gt; `TypedArray.prototype.toSorted()` function.
&gt; 
&gt; Because @globalPrivate does not define `sort` prototype function.
&gt; You need to have
&gt; 
&gt; function sort(...)
&gt; {
&gt;     return @sort(...)
&gt; }
&gt; 
&gt; and it is slower than our suggested way.

Hi! I added the LinkTimeConstant for `%%TypedArray%%.prototype.sort()`, but I am unable to figure out a way to access the LinkTimeConstant in the toSorted() function without exposing `%%TypedArray%%.prototype.sort()` as a @globalPrivate. Without declaring it as a @globalPrivate I keep getting the error:
`ReferenceError: Can&apos;t find private variable: PrivateSymbol.sort`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842431</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-16 11:59:56 -0800</bug_when>
    <thetext>(In reply to Aditi Singh from comment #13)
&gt; (In reply to Yusuke Suzuki from comment #12)
&gt; &gt; (In reply to Aditi Singh from comment #11)
&gt; &gt; &gt; &gt; 1. Defining sort function as m_linkTimeConstants&apos; lazy function.
&gt; &gt; &gt; &gt; 2. Defining `JSGlobalObject::typedArrayProtoSortFunction()` getter which returns it.
&gt; &gt; &gt; &gt; 3. Use that getter in TypedArrayPrototype&apos;s creation.
&gt; &gt; &gt; 
&gt; &gt; &gt; I followed these steps, and defined a m_linkTimeConstants&apos; lazy function for
&gt; &gt; &gt; `TypedArray.prototype.sort()`. But I am curious, why do we need to define a
&gt; &gt; &gt; LinkTimeConstant for sort? 
&gt; &gt; &gt; If we expose `TypedArray.prototype.sort()` as a globalPrivate and use it as 
&gt; &gt; &gt; `@sort.@call(array, comparefn)` in `TypedArray.prototype.toSorted()`, the
&gt; &gt; &gt; modifications in userland code don&apos;t seem to affect the
&gt; &gt; &gt; `TypedArray.prototype.toSorted()` function.
&gt; &gt; 
&gt; &gt; Because @globalPrivate does not define `sort` prototype function.
&gt; &gt; You need to have
&gt; &gt; 
&gt; &gt; function sort(...)
&gt; &gt; {
&gt; &gt;     return @sort(...)
&gt; &gt; }
&gt; &gt; 
&gt; &gt; and it is slower than our suggested way.
&gt; 
&gt; Hi! I added the LinkTimeConstant for `%%TypedArray%%.prototype.sort()`, but
&gt; I am unable to figure out a way to access the LinkTimeConstant in the
&gt; toSorted() function without exposing `%%TypedArray%%.prototype.sort()` as a
&gt; @globalPrivate. Without declaring it as a @globalPrivate I keep getting the
&gt; error:
&gt; `ReferenceError: Can&apos;t find private variable: PrivateSymbol.sort`

I mean, defining this as @globalPrivate, and putting the function to TypedArray prototype manually instead.
See, m_promiseResolveFunction for example. And let&apos;s get it and put it in TypedArray&apos;s prototype instead of using lut table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858810</commentid>
    <comment_count>15</comment_count>
      <attachid>456816</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-04-06 06:47:37 -0700</bug_when>
    <thetext>Created attachment 456816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858811</commentid>
    <comment_count>16</comment_count>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-04-06 06:47:52 -0700</bug_when>
    <thetext>(In reply to Aditi Singh from comment #15)
&gt; Created attachment 456816 [details]
&gt; Patch

Hi, apologies for the delay. 
There have been a few changes in change-array-by-copy proposal since my last patch, but none of them were observable. 
As per the previous review comments, I was supposed to define a m_linkTimeConstants&apos; lazy function for `%%TypedArray%%.prototype.sort()`. Is this the correct way to do it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858918</commentid>
    <comment_count>17</comment_count>
      <attachid>456816</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-04-06 10:58:38 -0700</bug_when>
    <thetext>Comment on attachment 456816
Patch

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

Great job, lazy function is correct, no worries on delay.

r=me with just 2 nits.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:155
&gt; +        Options::useChangeArrayByCopyMethods() ? &amp;vm.propertyNames-&gt;builtinNames().toSplicedPublicName() : nullptr,

&quot;with&quot; appears to be missing from unscopables, failing the tests.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1353
&gt; +        JSValue arraySort = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;get(this, vm.propertyNames-&gt;builtinNames().sortPublicName()));

I understand it&apos;s a copy of what we have for &quot;hasOwnProperty&quot;, but can we please do something like

    JSFunction* arrayStore = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;getDirect(this, vm.propertyNames-&gt;builtinNames().sortPublicName()));

removing the RELEASE_ASSERT and extra cast below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859168</commentid>
    <comment_count>18</comment_count>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-04-07 01:53:45 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #17)
&gt; Comment on attachment 456816 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456816&amp;action=review
&gt; 
&gt; Great job, lazy function is correct, no worries on delay.
&gt; 
&gt; r=me with just 2 nits.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:155
&gt; &gt; +        Options::useChangeArrayByCopyMethods() ? &amp;vm.propertyNames-&gt;builtinNames().toSplicedPublicName() : nullptr,
&gt; 
&gt; &quot;with&quot; appears to be missing from unscopables, failing the tests.

Oh, I did not add &quot;with&quot; to the unscopables because it was specified in the spec text: &quot;The reason that &quot;with&quot; is not included in the unscopableList is because it is already a reserved word.&quot;

For reference: https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype-@@unscopables

&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1353
&gt; &gt; +        JSValue arraySort = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;get(this, vm.propertyNames-&gt;builtinNames().sortPublicName()));
&gt; 
&gt; I understand it&apos;s a copy of what we have for &quot;hasOwnProperty&quot;, but can we
&gt; please do something like
&gt; 
&gt;     JSFunction* arrayStore =
&gt; jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;getDirect(this,
&gt; vm.propertyNames-&gt;builtinNames().sortPublicName()));
&gt; 
&gt; removing the RELEASE_ASSERT and extra cast below.

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860007</commentid>
    <comment_count>19</comment_count>
      <attachid>457159</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-04-09 02:31:02 -0700</bug_when>
    <thetext>Created attachment 457159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860259</commentid>
    <comment_count>20</comment_count>
      <attachid>457159</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-04-11 05:37:53 -0700</bug_when>
    <thetext>Comment on attachment 457159
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +        This patch implements proposal Change Array By Copy. The proposal provides additional 

nit: please add an extra newline before this.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Since, a call to intrinsic functions: Array.prototype.sort(comparefn) and 

It would be nice if you could expand the ChangeLog regarding why we treat TypedArray&apos;s sort() and Array&apos;s sort() differently (i.e. not all sites use TypedArray), and why it&apos;s important to avoid

    function sort(cmp) { return @arraySort.@call(this, cmp); }

for performance reasons.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1353
&gt; +        JSValue arraySort = jsCast&lt;JSFunction*&gt;(arrayPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;builtinNames().sortPublicName()));

nit: JSFunction* arraySort = ...

&gt; JSTests/stress/unscopables.js:1
&gt; +//@ requireOptions(&quot;--useAtMethod=1 --useChangeArrayByCopyMethods=1&quot;)

Aha, JSC tests fail because expected syntax is:

    //@ requireOptions(&quot;--useAtMethod=1&quot;, &quot;--useChangeArrayByCopyMethods=1&quot;)

&gt; JSTests/stress/unscopables.js:14
&gt; +    test(String(Object.keys(unscopables).sort()), &quot;at,copyWithin,entries,fill,find,findIndex,findLast,findLastIndex,flat,flatMap,includes,keys,toReversed,toSorted,toSpliced,values,with&quot;);

Should &quot;with&quot; be removed from here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860260</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-04-11 05:46:04 -0700</bug_when>
    <thetext>(In reply to Aditi Singh from comment #18)
&gt; (In reply to Alexey Shvayka from comment #17)
&gt; &gt; &gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:155
&gt; &gt; &gt; +        Options::useChangeArrayByCopyMethods() ? &amp;vm.propertyNames-&gt;builtinNames().toSplicedPublicName() : nullptr,
&gt; &gt; 
&gt; &gt; &quot;with&quot; appears to be missing from unscopables, failing the tests.
&gt; 
&gt; Oh, I did not add &quot;with&quot; to the unscopables because it was specified in the
&gt; spec text: &quot;The reason that &quot;with&quot; is not included in the unscopableList is
&gt; because it is already a reserved word.&quot;

Oh, my bad, I didn&apos;t look beyond test file name and just made an assumption. &quot;reserved word&quot; explanation makes perfect sense.

I&apos;ve added the absolutely last set of comments that should hopefully fix the JSC EWS.

Please re-upload the patch with --no-review --request-commit: after a r+, no re-review is needed unless the patch approach / idea was completely changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860627</commentid>
    <comment_count>22</comment_count>
      <attachid>457317</attachid>
    <who name="Aditi Singh">asingh</who>
    <bug_when>2022-04-12 02:31:19 -0700</bug_when>
    <thetext>Created attachment 457317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860729</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-12 10:56:09 -0700</bug_when>
    <thetext>Committed r292778 (249562@main): &lt;https://commits.webkit.org/249562@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457317.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449727</attachid>
            <date>2022-01-22 02:00:05 -0800</date>
            <delta_ts>2022-01-22 02:25:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220122153002.patch</filename>
            <type>text/plain</type>
            <size>26355</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTE4YTgzYTYwMzg1Zjk5YjNkOTNmODdlNzJiZDYzYjYxOTNjZTYyLi40N2I2ZTkzNDA2MmM1NjRj
ODZhYjllOGE5ZTAzMjQwMDZhODJhN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wMS0yMSAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnVpbHRpbnMvQXJy
YXlQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNvcnRIZWxwZXIpOgorICAg
ICAgICAoc29ydCk6CisgICAgICAgICh0b1JldmVyc2VkKToKKyAgICAgICAgKHRvU29ydGVkKToK
KyAgICAgICAgKHRvU3BsaWNlZCk6CisgICAgICAgICh3aXRoKToKKyAgICAgICAgKiBidWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5zb3J0SGVs
cGVyKToKKyAgICAgICAgKHNvcnQpOgorICAgICAgICAodG9SZXZlcnNlZCk6CisgICAgICAgICh0
b1NvcnRlZCk6CisgICAgICAgICh0b1NwbGljZWQpOgorICAgICAgICAod2l0aCk6CisgICAgICAg
ICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwogMjAy
Mi0wMS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODg0MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKaW5kZXggMjc2OGQxNDAxNzgwZTRiNTMz
MzYzMzM0YWNmYjFhODI2NTNlOWUxNC4uZTUxNzFmYTZjY2U5ZTEzNGUzM2YxZThjYTMyN2ViMmVm
ZjViZWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcwpAQCAtNTUzLDcgKzU1Myw4IEBAIGZ1bmN0aW9uIHNvcnRCdWNrZXRTb3J0KGFy
cmF5LCBkc3QsIGJ1Y2tldCwgZGVwdGgpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotZnVuY3Rpb24g
c29ydChjb21wYXJhdG9yKQorQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHNvcnRIZWxwZXIoYXJy
YXksIGNvbXBhcmF0b3IpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCkBAIC01NjMsNyArNTY0LDcg
QEAgZnVuY3Rpb24gc29ydChjb21wYXJhdG9yKQogICAgIGVsc2UgaWYgKCFAaXNDYWxsYWJsZShj
b21wYXJhdG9yKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29y
dCByZXF1aXJlcyB0aGUgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVu
ZGVmaW5lZCIpOwogCi0gICAgdmFyIHJlY2VpdmVyID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5w
cm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmlu
ZWQiKTsKKyAgICB2YXIgcmVjZWl2ZXIgPSBAdG9PYmplY3QoYXJyYXksICJBcnJheS5wcm90b3R5
cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsK
ICAgICB2YXIgcmVjZWl2ZXJMZW5ndGggPSBAdG9MZW5ndGgocmVjZWl2ZXIubGVuZ3RoKTsKIAog
ICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggRmlyZWZveCBhbmQgQ2hyb21lLCBkbyBub3Ro
aW5nIG9ic2VydmFibGUKQEAgLTU4NSw2ICs1ODYsMTEgQEAgZnVuY3Rpb24gc29ydChjb21wYXJh
dG9yKQogICAgIHJldHVybiByZWNlaXZlcjsKIH0KIAorZnVuY3Rpb24gc29ydChjb21wYXJhdG9y
KQoreworICAgIHJldHVybiBAc29ydEhlbHBlcih0aGlzLCBjb21wYXJhdG9yKTsKK30KKwogQGds
b2JhbFByaXZhdGUKIGZ1bmN0aW9uIGNvbmNhdFNsb3dQYXRoKCkKIHsKQEAgLTc5MSwzICs3OTcs
MTYyIEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAgcmV0dXJuIChrID49IDAgJiYgayA8IGxl
bmd0aCkgPyBhcnJheVtrXSA6IEB1bmRlZmluZWQ7CiB9CisKK2Z1bmN0aW9uIHRvUmV2ZXJzZWQo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICB2YXIgTyA9IEB0
b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICAvLyBTdGVwIDIuCisgICAg
dmFyIGxlbmd0aCA9IEB0b0xlbmd0aChPLmxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDMuCisgICAg
dmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDQt
NS4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIHZhciBm
cm9tVmFsdWUgPSBPW2xlbmd0aCAtIGsgLSAxXTsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJl
c3VsdCwgaywgZnJvbVZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDYuCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9Tb3J0ZWQoY29tcGFyZWZuKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICBpZiAoY29tcGFyZWZuICE9PSBAdW5kZWZp
bmVkICYmICFAaXNDYWxsYWJsZShjb21wYXJlZm4pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFyYXRvciBhcmd1bWVu
dCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAyLgorICAg
IHZhciBPID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICAvLyBTdGVw
IDMuCisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChPLmxlbmd0aCk7CisKKyAgICAvLyBTdGVw
IDQuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7CisKKyAgICAv
LyBTdGVwIDYtNworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspCisgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIE9ba10pOworCisgICAgLy8gU3RlcCA4LgorICAg
IEBzb3J0SGVscGVyKHJlc3VsdCwgY29tcGFyZWZuKTsKKworICAgIC8vIFN0ZXAgOS0xMCB1bm5l
Y2Vzc2FyeS4KKyAgICAvLyBTdGVwIDExLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0
aW9uIHRvU3BsaWNlZChzdGFydCwgZGVsZXRlQ291bnQgLyosIC4uLml0ZW1zICovKQoreworICAg
ICJ1c2Ugc3RyaWN0IgorCisgICAgLy8gU3RlcCAxLgorICAgIHZhciBPID0gQHRvT2JqZWN0KHRo
aXMsICJBcnJheS5wcm90b3R5cGUudG9TcGxpY2VkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAyLgorICAgIHZhciBsZW5ndGgg
PSBAdG9MZW5ndGgoTy5sZW5ndGgpOworCisgICAgLy8gU3RlcCAzLgorICAgIHZhciByZWxhdGl2
ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5maW5pdHkoc3RhcnQpOworCisgICAgdmFyIGFjdHVhbFN0
YXJ0OworICAgIC8vIFN0ZXAgNC02LgorICAgIGlmIChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmlu
aXR5KQorICAgICAgICBhY3R1YWxTdGFydCA9IDA7CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFy
dCA8IDApCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gbGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAg
PyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0IDogMDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0
YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0LCBsZW5ndGgpOworCisgICAgLy8gU3RlcCA3LgorICAg
IHZhciBpbnNlcnRDb3VudCA9IDA7CisgICAgdmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAg
Ly8gU3RlcCA4LTEwLgorICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICBh
Y3R1YWxEZWxldGVDb3VudCA9IDA7CisgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g
MSkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaW5zZXJ0Q291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAg
ICAgICAgdmFyIGRjID0gQHRvSW50ZWdlck9ySW5maW5pdHkoZGVsZXRlQ291bnQpOworICAgICAg
ICBkYyA9IGRjID4gMCA/IGRjIDogMDsKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBAbWlu
KGRjLCBsZW5ndGggLSBhY3R1YWxTdGFydCk7CisgICAgfQorCisgICAgLy8gU3RlcCAxMS4KKyAg
ICB2YXIgbmV3TGVuID0gbGVuZ3RoICsgaW5zZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudDsK
KworICAgIC8vIFN0ZXAgMTIuCisgICAgaWYgKG5ld0xlbiA+PSBATUFYX1NBRkVfSU5URUdFUikK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheSBsZW5ndGggZXhjZWVkcyAyKio1MyAtIDEi
KTsKKworICAgIC8vIFN0ZXAgMTMuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXpl
KG5ld0xlbik7CisKKyAgICAvLyBTdGVwIDE0LTE1LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwg
YWN0dWFsU3RhcnQ7IGsrKykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgT1tr
XSk7CisKKyAgICAvLyBTdGVwIDE2LgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zZXJ0Q291
bnQ7IGkrKywgaysrKSB7CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFyZ3Vt
ZW50c1tpICsgMl0pOworICAgIH0KKworICAgIC8vIFN0ZXAgMTcuCisgICAgZm9yICg7IGsgPCBu
ZXdMZW47IGsrKykgeworICAgICAgICB2YXIgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAt
IGluc2VydENvdW50OworICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBPW2Zyb21d
KTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDE4LgorICAgIHJldHVybiByZXN1bHQ7CisKK30KKwor
ZnVuY3Rpb24gd2l0aChpbmRleCwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gU3RlcCAxLgorICAgIHZhciBPID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUu
d2l0aCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKwor
ICAgIC8vIFN0ZXAgMi4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKE8ubGVuZ3RoKTsKKwor
ICAgIC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVsYXRpdmVJbmRleCA9IEB0b0ludGVnZXJPckluZmlu
aXR5KGluZGV4KTsKKworICAgIC8vIFN0ZXAgNC01LgorICAgIHZhciBhY3R1YWxJbmRleDsKKyAg
ICBpZiAocmVsYXRpdmVJbmRleCA+PSAwKQorICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0aXZl
SW5kZXg7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0aXZl
SW5kZXg7CisKKyAgICAvLyBTdGVwIDYuCisgICAgaWYgKGFjdHVhbEluZGV4ID49IGxlbmd0aCB8
fCBhY3R1YWxJbmRleCA8IDApCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4
IG91dCBvZiBSYW5nZSIpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciByZXN1bHQgPSBAbmV3
QXJyYXlXaXRoU2l6ZShsZW5ndGgpOworCisgICAgLy8gU3RlcCA4LTkKKyAgICBmb3IgKHZhciBr
ID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIGlmKGsgPT09IGFjdHVhbEluZGV4KQor
ICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBPW2tdKTsKKyAgICB9
CisKKyAgICAvLyBTdGVwIDEwLgorICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4
IDZkNDRlYjZjMTQxZTUwODJkZDUyYWVlMzVkYzJjYzY5YTc3NWNlNzQuLmVhOTc2YjY1NmY2NzE3
Zjc5MzE1MDEzYjU5NThjZjBlMDM5ZmQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCkBAIC0yMjYsMjcgKzIyNiwz
MyBAQCBmdW5jdGlvbiB0eXBlZEFycmF5TWVyZ2VTb3J0KGFycmF5LCB2YWx1ZUNvdW50LCBjb21w
YXJhdG9yKQogICAgIH0KIH0KIAotZnVuY3Rpb24gc29ydChjb21wYXJhdG9yKQorQGdsb2JhbFBy
aXZhdGUKK2Z1bmN0aW9uIHNvcnRIZWxwZXIoYXJyYXksIGNvbXBhcmF0b3IpCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwogCiAgICAgaWYgKGNvbXBhcmF0b3IgIT09IEB1bmRlZmluZWQgJiYgIUBpc0Nh
bGxhYmxlKGNvbXBhcmF0b3IpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXku
cHJvdG90eXBlLnNvcnQgcmVxdWlyZXMgdGhlIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgYSBm
dW5jdGlvbiBvciB1bmRlZmluZWQiKTsKIAotICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxl
bmd0aCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgoYXJyYXkpOwog
ICAgIGlmIChsZW5ndGggPCAyKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgcmV0dXJu
IGFycmF5OwogCiAgICAgLy8gdHlwZWRBcnJheVNvcnQgaXMgbm90IHNhZmUgd2hlbiB0aGUgb3Ro
ZXIgdGhyZWFkIGlzIG1vZGlmeWluZyBjb250ZW50LiBTbyBpZiB8dGhpc3wgaXMgU2hhcmVkQXJy
YXlCdWZmZXIsCiAgICAgLy8gdXNlIEpTLWltcGxlbWVudGVkIHNvcnRpbmcuCi0gICAgaWYgKGNv
bXBhcmF0b3IgIT09IEB1bmRlZmluZWQgfHwgQGlzU2hhcmVkVHlwZWRBcnJheVZpZXcodGhpcykp
IHsKKyAgICBpZiAoY29tcGFyYXRvciAhPT0gQHVuZGVmaW5lZCB8fCBAaXNTaGFyZWRUeXBlZEFy
cmF5VmlldyhhcnJheSkpIHsKICAgICAgICAgaWYgKGNvbXBhcmF0b3IgPT09IEB1bmRlZmluZWQp
CiAgICAgICAgICAgICBjb21wYXJhdG9yID0gQHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvcjsK
LSAgICAgICAgQHR5cGVkQXJyYXlNZXJnZVNvcnQodGhpcywgbGVuZ3RoLCBjb21wYXJhdG9yKTsK
KyAgICAgICAgQHR5cGVkQXJyYXlNZXJnZVNvcnQoYXJyYXksIGxlbmd0aCwgY29tcGFyYXRvcik7
CiAgICAgfSBlbHNlCi0gICAgICAgIEB0eXBlZEFycmF5U29ydCh0aGlzKTsKKyAgICAgICAgQHR5
cGVkQXJyYXlTb3J0KGFycmF5KTsKIAotICAgIHJldHVybiB0aGlzOworICAgIHJldHVybiBhcnJh
eTsKK30KKworZnVuY3Rpb24gc29ydChjb21wYXJhdG9yKQoreworICAgIHJldHVybiBAc29ydEhl
bHBlcih0aGlzLCBjb21wYXJhdG9yKTsKIH0KIAogZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVu
ZCkKQEAgLTQwNCwzICs0MTAsMTQ4IEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAgcmV0dXJu
IChrID49IDAgJiYgayA8IGxlbmd0aCkgPyB0aGlzW2tdIDogQHVuZGVmaW5lZDsKIH0KKworZnVu
Y3Rpb24gdG9SZXZlcnNlZCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAy
LTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAgLy8g
U3RlcCA0LgorICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25z
dHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7
CisKKyAgICAvLyBTdGVwIDUtNi4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysr
KSB7CisgICAgICAgIHZhciBmcm9tVmFsdWUgPSB0aGlzW2xlbmd0aCAtIGsgLSAxXTsKKyAgICAg
ICAgcmVzdWx0W2tdID0gZnJvbVZhbHVlOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2Z1bmN0aW9uIHRvU29ydGVkKGNvbXBhcmVmbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICAvLyBTdGVwIDEuCisgICAgaWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVmaW5lZCAmJiAhQGlz
Q2FsbGFibGUoY29tcGFyZWZuKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5
LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFyZWZuIGFyZ3VtZW50IHRvIGJl
IGEgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIik7CisKKyAgICAvLyBTdGVwIDMtNC4KKyAgICB2YXIg
bGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CisKKyAgICAvLyBTdGVwIDUtNi4KKyAg
ICB2YXIgY29uc3RydWN0b3IgPSBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhp
cyk7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBjb25zdHJ1Y3RvcihsZW5ndGgpOworCisgICAgLy8g
U3RlcCA3LTguCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykKKyAgICAgICAg
cmVzdWx0W2tdID0gdGhpc1trXTsKKworICAgIC8vIFN0ZXAgOS4KKyAgICBAc29ydEhlbHBlcihy
ZXN1bHQsIGNvbXBhcmVmbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiB0
b1NwbGljZWQoc3RhcnQsIGRlbGV0ZUNvdW50IC8qLCAuLi5pdGVtcyAqLykKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDItMy4KKyAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJy
YXlMZW5ndGgodGhpcyk7CisKKyAgICAvLyBTdGVwIDQuCisgICAgdmFyIHJlbGF0aXZlU3RhcnQg
PSBAdG9JbnRlZ2VyT3JJbmZpbml0eShzdGFydCk7CisKKyAgICAvLyBTdGVwIDUtNy4KKyAgICB2
YXIgYWN0dWFsU3RhcnQ7CisgICAgaWYgKHJlbGF0aXZlU3RhcnQgPT09IC1ASW5maW5pdHkpCisg
ICAgICAgIGFjdHVhbFN0YXJ0ID0gMDsKKyAgICBlbHNlIGlmIChyZWxhdGl2ZVN0YXJ0IDwgMCkK
KyAgICAgICAgYWN0dWFsU3RhcnQgPSBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0ID4gMCA/IGxlbmd0
aCArIHJlbGF0aXZlU3RhcnQgOiAwOworICAgIGVsc2UKKyAgICAgICAgYWN0dWFsU3RhcnQgPSBA
bWluKHJlbGF0aXZlU3RhcnQsIGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDgtMTAuCisgICAgdmFy
IGluc2VydENvdW50ID0gMDsKKyAgICB2YXIgYWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAwOwor
ICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgIGFjdHVhbERlbGV0
ZUNvdW50ID0gbGVuZ3RoIC0gYWN0dWFsU3RhcnQ7CisgICAgZWxzZSB7CisgICAgICAgIGluc2Vy
dENvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgICAgICAgIHZhciBkYyA9IEB0b0ludGVn
ZXJPckluZmluaXR5KGRlbGV0ZUNvdW50KTsKKyAgICAgICAgZGMgPSBkYyA+IDAgPyBkYyA6IDA7
CisgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gQG1pbihkYywgbGVuZ3RoIC0gYWN0dWFsU3Rh
cnQpOworICAgIH0KKworICAgIC8vIFN0ZXAgMTEuCisgICAgdmFyIG5ld0xlbiA9IGxlbmd0aCAr
IGluc2VydENvdW50IC0gYWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICAvLyBTdGVwIDEyLgorICAg
IHZhciBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlz
KTsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKG5ld0xlbik7CisKKyAgICAvLyBT
dGVwIDEzLTE0LgorICAgIHZhciBrID0gMDsKKyAgICBmb3IgKDsgayA8IGFjdHVhbFN0YXJ0OyBr
KyspIHsKKyAgICAgICAgcmVzdWx0W2tdID0gdGhpc1trXTsKKyAgICB9CisKKyAgICAvLyBTdGVw
IDE1LgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zZXJ0Q291bnQ7IGkrKykgeworICAgICAg
ICByZXN1bHRba10gPSBhcmd1bWVudHNbaSArIDJdOworICAgICAgICBrKys7CisgICAgfQorCisg
ICAgLy8gU3RlcCAxNi4KKyAgICBmb3IgKDsgayA8IG5ld0xlbjsgaysrKSB7CisgICAgICAgIHZh
ciBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50IC0gaW5zZXJ0Q291bnQ7CisgICAgICAgIHJl
c3VsdFtrXSA9IHRoaXNbZnJvbV07CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
ZnVuY3Rpb24gd2l0aChpbmRleCwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gU3RlcCAyLTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwor
CisgICAgLy8gU3RlcCA0LgorICAgIHZhciByZWxhdGl2ZUluZGV4ID0gQHRvSW50ZWdlck9ySW5m
aW5pdHkoaW5kZXgpOworICAgIHZhciBhY3R1YWxJbmRleDsKKworICAgIC8vIFN0ZXAgNS02Lgor
ICAgIGlmIChyZWxhdGl2ZUluZGV4ID49IDApCisgICAgICAgIGFjdHVhbEluZGV4ID0gcmVsYXRp
dmVJbmRleDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbEluZGV4ID0gbGVuZ3RoICsgcmVsYXRp
dmVJbmRleDsKKworICAgIC8vIFN0ZXAgNy4KKyAgICBpZiAoQGlzRGV0YWNoZWQodGhpcykpCisg
ICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLndpdGggY2FsbGVk
IG9uIGFuIGRldGFjaGVkIGFycmF5Iik7CisgICAgaWYgKGFjdHVhbEluZGV4IDwgMCB8fCBhY3R1
YWxJbmRleCA+PSBsZW5ndGgpCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4
IG91dCBvZiByYW5nZSIpCisKKyAgICAvLyBTdGVwIDguCisgICAgdmFyIGNvbnN0cnVjdG9yID0g
QHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpOworICAgIHZhciByZXN1bHQg
PSBuZXcgY29uc3RydWN0b3IobGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgOS0xMC4KKyAgICBmb3Ig
KHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIGlmIChrID09IGFjdHVhbElu
ZGV4KQorICAgICAgICAgICAgcmVzdWx0W2tdID0gdmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCBkNDkzYzVlNzc3MGFjNTAxNmQyYTAxODIyMmMxNDVjYjcyN2Y0NDA4Li43Y2FiYWVm
ZmEwYjYyZmY5MjFmNDFjZDc1ZDYzYTM1MzExMThmMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMjIsNyArMTIyLDEyIEBA
IHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGlmIChPcHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAg
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlQXRDb2Rl
R2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkp
IHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU29ydGVkUHVibGljTmFtZSgpLCBhcnJheVBy
b3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkud2l0aFB1
YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVXaXRoQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudG9TcGxpY2VkUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVRvU3BsaWNlZENv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvUmV2ZXJzZWRQdWJsaWNOYW1lKCks
IGFycmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVu
dHJpZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFt
ZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVh
Y2hQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCkpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CkBAIC0xNDUs
NiArMTUwLDkgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBPcHRpb25zOjp1c2VBcnJheUdy
b3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5
VG9NYXBQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLAorICAgICAgICBPcHRpb25z
Ojp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS50b1JldmVyc2VkUHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0
aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkudG9Tb3J0ZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBP
cHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAg
ICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpCiAg
ICAgfTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIHVuc2NvcGFibGVOYW1lIDogdW5zY29wYWJsZU5h
bWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDg4MjdiM2RlOThmZTA1ZmU1OGI5MTcw
NDI5ZTM4NjQ5OTVlMTlmNTguLjlkYWQwOTI4NzBkODFiMmFhZjEwNWQyMTRlNzJlYjQ3ODZlMDMz
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBAIC00NzQsNiArNDc0LDEyIEBAIHZvaWQgSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPnN1YmFycmF5LCB0eXBlZEFycmF5UHJvdG90eXBlU3ViYXJy
YXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nLCB0eXBlZEFycmF5UHJvdG90eXBlVG9M
b2NhbGVTdHJpbmdDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlC
eUNvcHlNZXRob2RzKCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJ3aXRoIiwgdHlwZWRBcnJheVByb3RvdHlwZVdpdGhDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9SZXZlcnNlZCIs
IHR5cGVkQXJyYXlQcm90b3R5cGVUb1JldmVyc2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU29ydGVkIiwgdHlwZWRBcnJheVBy
b3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oInRvU3BsaWNlZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVUb1NwbGlj
ZWRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgfQogICAgIGlmIChPcHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAg
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNOYW1lKCksIHR5cGVkQXJyYXlQcm90b3R5cGVB
dENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKaW5kZXggYmY5ZDhhMzgzZjczNzlmYjFiOTljYTI0OGFhOTIwZGMxNTFmOWFjOC4uM2I0NWI1
MjQ2NjBkOGU5NmU5YmJkNzBjZDUzN2EzOTZmOGY4ODVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBjYW5V
c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2wsIHVzZUFycmF5RmluZExhc3RN
ZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZmluZExhc3QoKSBhbmQgZmluZExhc3RJ
bmRleCgpIG1ldGhvZHMgb24gQXJyYXkgYW5kICVUeXBlZEFycmF5JS4iKSBcCiAgICAgdihCb29s
LCB1c2VBcnJheUdyb3VwQnlNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGdyb3Vw
QnkoKSBhbmQgZ3JvdXBCeVRvTWFwKCkgbWV0aG9kcyBvbiBBcnJheS4iKSBcCiAgICAgdihCb29s
LCB1c2VBdE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBvbiBB
cnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKKyAgICB2KEJvb2wsIHVzZUNoYW5n
ZUFycmF5QnlDb3B5TWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgd2l0aEF0KCks
IHdpdGhSZXZlcnNlZCgpLCB3aXRoU29ydGVkKCkgYW5kIHdpdGhTcGxpY2VkKCkgbWV0aG9kcyBv
biBBcnJheSBhbmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJv
b2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVu
dW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjkzMWQxMWNlYTgyZmMyOWNlODY2ZjJiMTg1NjlhNzY4
ZWE5NmI0Yi4uZWEzZDczMGY0YjhmNGQwMTQ0NTE4ZTRkODViNzRkNmZjOWRjNzI5MiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMi0wMS0yMSAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2NoYW5nZS1h
cnJheS1ieS1jb3B5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZFRocm93KToKKyAgICAgICAgKHNoYWxsb3dFcXVhbCk6CisgICAgICAgICogc3RyZXNzL3R5
cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNoYWxsb3dFcXVhbCk6CisgICAgICAg
IChzZXF1ZW5jZS5uZXcuVWludDhBcnJheSk6CisgICAgICAgICogc3RyZXNzL3Vuc2NvcGFibGVz
LmpzOgorCiAyMDIyLTAxLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLk5vdy5pbnN0YW50KCkKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvY2hhbmdlLWFycmF5LWJ5LWNvcHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM1Y2EyMmM2ODU0MzM0ZDZk
ZDE3OGY4NmIyOWU0ZjE0NzkxNmMwZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCkBAIC0wLDAgKzEsMTE3IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzPTEiKQorCitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKCFzaGFsbG93RXF1YWwoYWN0dWFsLCBl
eHBlY3RlZCkpeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVz
c2FnZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAgICBp
ZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3NhZ2V9
IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke1N0
cmluZyhlcnJvcil9IGJ1dCBnb3QgJHttZXNzYWdlfWApOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0gYi5s
ZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2YXIgc2VxdWVuY2Ug
PSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdOworCisvLyBBcnJheS5wcm90b3R5cGUu
dG9SZXZlcnNlZCgpCit7CisgICAgbGV0IHJldmVyc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50b1Jl
dmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJzZWRTZXF1ZW5jZSwgWzEwLCA5LCA4LCA3LCA2
LCA1LCA0LCAzLCAyLCAxXSk7CisKKyAgICAvLyB8dGhpc3wgPSBudWxsLgorICAgIHNob3VsZFRo
cm93KCgpID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9SZXZlcnNlZChudWxsLCAwLCA1
KSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXkucHJvdG90eXBlLnRvU29ydGVkKCkKK3sKKyAg
ICB2YXIgdW5zb3J0ZWRTZXF1ZW5jZSA9IFs5LCAyLCAzLCA0LCA1NiwgMTIsIDBdOworICAgIHZh
ciBzb3J0ZWRTZXF1ZW5jZSA9IHVuc29ydGVkU2VxdWVuY2UudG9Tb3J0ZWQoKTsKKyAgICBzaG91
bGRCZShzb3J0ZWRTZXF1ZW5jZSwgWzAsIDEyLCAyLCAzLCA0LCA1NiwgOV0pOworCisgICAgLy8g
fHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUudG9T
b3J0ZWQuY2FsbChudWxsKSwgVHlwZUVycm9yKTsKKworICAgIC8vIE5vbiBjYWxsYWJsZSBjb21w
YXJhdG9yLgorICAgIHZhciBub25DYWxsYWJsZUNvbXBhcmF0b3IgPSAiYSI7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gdW5zb3J0ZWRTZXF1ZW5jZS50b1NvcnRlZChub25DYWxsYWJsZUNvbXBhcmF0
b3IpLCBUeXBlRXJyb3IpOworfQorCisvLyBBcnJheS5wcm90b3R5cGUudG9TcGxpY2VkKCkKK3sK
KyAgICB2YXIgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAg
IHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDksIDEwXSk7CisKKyAgICAvLyBT
dGFydCBtaXNzaW5nLgorICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgp
OworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVuY2UpOworCisgICAgLy8gRGVs
ZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxp
Y2VkKDMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDNdKTsKKworICAg
IC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50b1Nw
bGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVuY2UsIFtdKTsKKwor
ICAgIC8vIERlbGV0ZSBjb3VudCB1bmRlZmluZWQuCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2Vx
dWVuY2UudG9TcGxpY2VkKDEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoc3BsaWNlZFNlcXVl
bmNlLCBzZXF1ZW5jZSk7CisKKyAgICAvLyBJbnNlcnRpb24KKyAgICBzcGxpY2VkU2VxdWVuY2Ug
PSBzZXF1ZW5jZS50b1NwbGljZWQoMywgNSwgMTEsIDEyLCAxMyk7CisgICAgc2hvdWxkQmUoc3Bs
aWNlZFNlcXVlbmNlLCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKKworICAgIC8vIHx0
aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBlLnRvU3Bs
aWNlZC5jYWxsKG51bGwsIDAsIDUpLCBUeXBlRXJyb3IpOworCisgICAgLy8gTGVuZ3RoID49IDJe
NTMgLSAxLgorICAgIHZhciBhcnJheUxpa2UgPSB7fTsKKyAgICBhcnJheUxpa2UubGVuZ3RoID0g
MiAqKiA1MyAtIDE7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBlLnRvU3Bs
aWNlZC5jYWxsKGFycmF5TGlrZSwgMCwgMCwgbnVsbCksIFR5cGVFcnJvcik7Cit9CisKKy8vQXJy
YXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZhciB3aXRoU2VxdWVuY2UgPSBzZXF1ZW5jZS53
aXRoKDMsICJhIik7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBbMSwgMiwgMywgImEiLCA1
LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggbWlzc2luZy4KKyAgICB3aXRoU2Vx
dWVuY2UgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBbdW5k
ZWZpbmVkLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggdW5k
ZWZpbmVkLgorICAgIHdpdGhTZXF1ZW5jZSA9IHNlcXVlbmNlLndpdGgodW5kZWZpbmVkLCAiYSIp
OworICAgIHNob3VsZEJlKHdpdGhTZXF1ZW5jZSwgWyJhIiwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisgICAgc2hvdWxkVGhyb3coKCkgPT4g
c2VxdWVuY2Uud2l0aCgtMTEsICJhIiksIFJhbmdlRXJyb3IpOworCisgICAgLy8gfHRoaXN8ID0g
bnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUudG9SZXZlcnNlZC53
aXRoKG51bGwsIDUsICJhIiksIFR5cGVFcnJvcik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVk
LWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MzEyZmEzMjUxODdiZGQ2YTM3
NzRlZDg3Y2FhM2I5NDYyZDZmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90
eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpAQCAtMCwwICsxLDEwNyBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKKworZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmICghc2hhbGxvd0VxdWFsKGFjdHVh
bCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVj
dGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAgICAg
ICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHttZXNz
YWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChTdHJpbmcoZXJyb3Ip
ICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQg
JHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1gKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT09
IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHNlcXVl
bmNlID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisK
Ky8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQoreworICAgIHZhciByZXZlcnNl
ZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJz
ZWRUeXBlZEFycmF5LCBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdKTsKK30KKworLy8g
VHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQoKQoreworICAgIHZhciB1bnNvcnRlZFR5cGVk
QXJyYXkgPSBuZXcgVWludDhBcnJheShbOSwgMiwgMywgNCwgNTYsIDEyLCAwXSk7CisgICAgbGV0
IHNvcnRlZFR5cGVkQXJyYXkgPSB1bnNvcnRlZFR5cGVkQXJyYXkudG9Tb3J0ZWQoKTsKKyAgICBz
aG91bGRCZShzb3J0ZWRUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwgOSwgMTIsIDU2XSk7CisKKyAg
ICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIgbm9uQ2FsbGFibGVDb21wYXJh
dG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29ydGVkVHlwZWRBcnJheS50b1Nv
cnRlZChub25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisKKy8vIFR5cGVk
QXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFyIHNwbGljZWRUeXBlZEFycmF5
ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFy
cmF5LCBbMSwgMiwgMywgOSwgMTBdKTsKKworICAgIC8vIFN0YXJ0IG1pc3NpbmcKKyAgICBzcGxp
Y2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgpOworICAgIHNob3VsZEJlKHNwbGlj
ZWRUeXBlZEFycmF5LCBzZXF1ZW5jZSk7CisKKyAgICAvLyBEZWxldGUgY291bnQgbWlzc2luZy4K
KyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzKTsKKyAgICBzaG91
bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDNdKTsKKworICAgIC8vIFN0YXJ0IHVuZGVm
aW5lZC4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCh1bmRlZmlu
ZWQpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbXSk7CisKKyAgICAvLyBEZWxl
dGUgY291bnQgdW5kZWZpbmVkCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1Nw
bGljZWQoMywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgc2Vx
dWVuY2UpOworCisgICAgLy8gSW5zZXJ0aW9uLgorICAgIHNwbGljZWRUeXBlZEFycmF5ID0gc2Vx
dWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAxMiwgMTMpOworICAgIHNob3VsZEJlKHNwbGljZWRU
eXBlZEFycmF5LCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKK30KKworLy8gVHlwZWRB
cnJheS5wcm90b3R5cGUud2l0aCgpCit7CisgICAgdmFyIHdpdGhUeXBlZEFycmF5ID0gc2VxdWVu
Y2Uud2l0aCgzLCAwKTsKKyAgICBzaG91bGRCZSh3aXRoVHlwZWRBcnJheSwgWzEsIDIsIDMsIDAs
IDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbmRleCBtaXNzaW5nCisgICAgd2l0aFR5
cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXks
IFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggdW5kZWZp
bmVkCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKHVuZGVmaW5lZCwgMCk7Cisg
ICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx
MF0pOworCisgICAgLy8gSW52YWxpZCBpbmRleC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBzZXF1
ZW5jZS53aXRoKC0xMSwgMCksIFJhbmdlRXJyb3IpOworCisgICAgLy8gRGV0YWNoZWQgYnVmZmVy
LgorICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoc2VxdWVuY2UuYnVmZmVyKTsKKyAgICBzaG91bGRU
aHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKDAsIDApLCBUeXBlRXJyb3IpOworfQorCisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdW5z
Y29wYWJsZXMuanMKaW5kZXggODg0OTBkYmZlNGNhYWY4NzgyNzk3NzBmNjY1N2MzZDEzYTkzMzU2
NC4uNGRkZDg1ZDU5MmQwZmJiMmE2NjRkZDA4ODY2YjIxNGJlZGVhMzgyZiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdW5zY29w
YWJsZXMuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRo
b2Q9MSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRob2Q9MSAtLXVzZUNoYW5nZUFy
cmF5QnlDb3B5TWV0aG9kcz0xIikKIAogZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7
CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkBAIC0xMSw3ICsxMSw3IEBAIGZ1bmN0aW9u
IHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogCiAgICAgdGVzdCh0eXBlb2YgdW5zY29wYWJsZXMs
ICJvYmplY3QiKTsKICAgICB0ZXN0KHVuc2NvcGFibGVzLl9fcHJvdG9fXywgdW5kZWZpbmVkKTsK
LSAgICB0ZXN0KFN0cmluZyhPYmplY3Qua2V5cyh1bnNjb3BhYmxlcykuc29ydCgpKSwgImF0LGNv
cHlXaXRoaW4sZW50cmllcyxmaWxsLGZpbmQsZmluZEluZGV4LGZpbmRMYXN0LGZpbmRMYXN0SW5k
ZXgsZmxhdCxmbGF0TWFwLGluY2x1ZGVzLGtleXMsdmFsdWVzIik7CisgICAgdGVzdChTdHJpbmco
T2JqZWN0LmtleXModW5zY29wYWJsZXMpLnNvcnQoKSksICJhdCxjb3B5V2l0aGluLGVudHJpZXMs
ZmlsbCxmaW5kLGZpbmRJbmRleCxmaW5kTGFzdCxmaW5kTGFzdEluZGV4LGZsYXQsZmxhdE1hcCxp
bmNsdWRlcyxrZXlzLHRvUmV2ZXJzZWQsdG9Tb3J0ZWQsdG9TcGxpY2VkLHZhbHVlcyIpOwogfSgp
KTsKIAogKGZ1bmN0aW9uICgpIHsK
</data>
<flag name="commit-queue"
          id="475913"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449729</attachid>
            <date>2022-01-22 02:20:54 -0800</date>
            <delta_ts>2022-02-01 10:04:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220122155051.patch</filename>
            <type>text/plain</type>
            <size>26415</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTE4YTgzYTYwMzg1Zjk5YjNkOTNmODdlNzJiZDYzYjYxOTNjZTYyLi5hMGYxZTc5NjcyMWU0ZmVi
MzRlN2UzNGFlYWI1OThmMWY2YmMwMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wMS0yMSAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnVpbHRpbnMvQXJy
YXlQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5U29ydEhlbHBlcik6
CisgICAgICAgIChzb3J0KToKKyAgICAgICAgKHRvUmV2ZXJzZWQpOgorICAgICAgICAodG9Tb3J0
ZWQpOgorICAgICAgICAodG9TcGxpY2VkKToKKyAgICAgICAgKHdpdGgpOgorICAgICAgICAqIGJ1
aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnR5
cGVkQXJyYXlTb3J0SGVscGVyKToKKyAgICAgICAgKHNvcnQpOgorICAgICAgICAodG9SZXZlcnNl
ZCk6CisgICAgICAgICh0b1NvcnRlZCk6CisgICAgICAgICh0b1NwbGljZWQpOgorICAgICAgICAo
d2l0aCk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKwogMjAyMi0wMS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODg0MDAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKaW5kZXggMjc2
OGQxNDAxNzgwZTRiNTMzMzYzMzM0YWNmYjFhODI2NTNlOWUxNC4uZmIwZDQ5MDFkZjU3NGExYjcy
ZmVhNjkzOGRlMTY4NWIxMTZiZWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtNTUzLDcgKzU1Myw4IEBAIGZ1bmN0aW9uIHNv
cnRCdWNrZXRTb3J0KGFycmF5LCBkc3QsIGJ1Y2tldCwgZGVwdGgpCiAgICAgcmV0dXJuIGRzdDsK
IH0KIAotZnVuY3Rpb24gc29ydChjb21wYXJhdG9yKQorQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9u
IGFycmF5U29ydEhlbHBlcihhcnJheSwgY29tcGFyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7
CiAKQEAgLTU2Myw3ICs1NjQsNyBAQCBmdW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCiAgICAgZWxz
ZSBpZiAoIUBpc0NhbGxhYmxlKGNvbXBhcmF0b3IpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoZSBjb21wYXJhdG9yIGFyZ3VtZW50IHRv
IGJlIGEgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIik7CiAKLSAgICB2YXIgcmVjZWl2ZXIgPSBAdG9P
YmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgIHZhciByZWNlaXZlciA9IEB0b09iamVjdChh
cnJheSwgIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciByZWNlaXZlckxlbmd0aCA9IEB0b0xlbmd0aChy
ZWNlaXZlci5sZW5ndGgpOwogCiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBGaXJlZm94
IGFuZCBDaHJvbWUsIGRvIG5vdGhpbmcgb2JzZXJ2YWJsZQpAQCAtNTg1LDYgKzU4NiwxMSBAQCBm
dW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCiAgICAgcmV0dXJuIHJlY2VpdmVyOwogfQogCitmdW5j
dGlvbiBzb3J0KGNvbXBhcmF0b3IpCit7CisgICAgcmV0dXJuIEBhcnJheVNvcnRIZWxwZXIodGhp
cywgY29tcGFyYXRvcik7Cit9CisKIEBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBjb25jYXRTbG93
UGF0aCgpCiB7CkBAIC03OTEsMyArNzk3LDE2MiBAQCBmdW5jdGlvbiBhdChpbmRleCkKIAogICAg
IHJldHVybiAoayA+PSAwICYmIGsgPCBsZW5ndGgpID8gYXJyYXlba10gOiBAdW5kZWZpbmVkOwog
fQorCitmdW5jdGlvbiB0b1JldmVyc2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAv
LyBTdGVwIDEuCisgICAgdmFyIE8gPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS50
b1JldmVyc2VkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
OworCisgICAgLy8gU3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoTy5sZW5ndGgp
OworCisgICAgLy8gU3RlcCAzLgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZShs
ZW5ndGgpOworCisgICAgLy8gU3RlcCA0LTUuCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5n
dGg7IGsrKykgeworICAgICAgICB2YXIgZnJvbVZhbHVlID0gT1tsZW5ndGggLSBrIC0gMV07Cisg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGZyb21WYWx1ZSk7CisgICAgfQorCisg
ICAgLy8gU3RlcCA2LgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU29ydGVk
KGNvbXBhcmVmbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisgICAg
aWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVmaW5lZCAmJiAhQGlzQ2FsbGFibGUoY29tcGFyZWZuKSkK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQgcmVxdWly
ZXMgdGhlIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWQi
KTsKKworICAgIC8vIFN0ZXAgMi4KKyAgICB2YXIgTyA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXku
cHJvdG90eXBlLnRvU29ydGVkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAzLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgo
Ty5sZW5ndGgpOworCisgICAgLy8gU3RlcCA0LgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJyYXlX
aXRoU2l6ZShsZW5ndGgpOworCisgICAgLy8gU3RlcCA2LTcKKyAgICBmb3IgKHZhciBrID0gMDsg
ayA8IGxlbmd0aDsgaysrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBPW2td
KTsKKworICAgIC8vIFN0ZXAgOC4KKyAgICBAYXJyYXlTb3J0SGVscGVyKHJlc3VsdCwgY29tcGFy
ZWZuKTsKKworICAgIC8vIFN0ZXAgOS0xMCB1bm5lY2Vzc2FyeS4KKyAgICAvLyBTdGVwIDExLgor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU3BsaWNlZChzdGFydCwgZGVsZXRl
Q291bnQgLyosIC4uLml0ZW1zICovKQoreworICAgICJ1c2Ugc3RyaWN0IgorCisgICAgLy8gU3Rl
cCAxLgorICAgIHZhciBPID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9TcGxp
Y2VkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisg
ICAgLy8gU3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoTy5sZW5ndGgpOworCisg
ICAgLy8gU3RlcCAzLgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5maW5p
dHkoc3RhcnQpOworCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIC8vIFN0ZXAgNC02LgorICAg
IGlmIChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFydCA9
IDA7CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0YXJ0
ID0gbGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0IDog
MDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0LCBs
ZW5ndGgpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7CisgICAg
dmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCA4LTEwLgorICAgIGlmIChhcmd1
bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7CisgICAg
ZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291
bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW5zZXJ0Q291
bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgICAgICAgdmFyIGRjID0gQHRvSW50ZWdlck9y
SW5maW5pdHkoZGVsZXRlQ291bnQpOworICAgICAgICBkYyA9IGRjID4gMCA/IGRjIDogMDsKKyAg
ICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBAbWluKGRjLCBsZW5ndGggLSBhY3R1YWxTdGFydCk7
CisgICAgfQorCisgICAgLy8gU3RlcCAxMS4KKyAgICB2YXIgbmV3TGVuID0gbGVuZ3RoICsgaW5z
ZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIC8vIFN0ZXAgMTIuCisgICAgaWYg
KG5ld0xlbiA+PSBATUFYX1NBRkVfSU5URUdFUikKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJB
cnJheSBsZW5ndGggZXhjZWVkcyAyKio1MyAtIDEiKTsKKworICAgIC8vIFN0ZXAgMTMuCisgICAg
dmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKG5ld0xlbik7CisKKyAgICAvLyBTdGVwIDE0
LTE1LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYWN0dWFsU3RhcnQ7IGsrKykKKyAgICAgICAg
QHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgT1trXSk7CisKKyAgICAvLyBTdGVwIDE2LgorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgaW5zZXJ0Q291bnQ7IGkrKywgaysrKSB7CisgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFyZ3VtZW50c1tpICsgMl0pOworICAgIH0KKworICAg
IC8vIFN0ZXAgMTcuCisgICAgZm9yICg7IGsgPCBuZXdMZW47IGsrKykgeworICAgICAgICB2YXIg
ZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAtIGluc2VydENvdW50OworICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBPW2Zyb21dKTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDE4
LgorICAgIHJldHVybiByZXN1bHQ7CisKK30KKworZnVuY3Rpb24gd2l0aChpbmRleCwgdmFsdWUp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAxLgorICAgIHZhciBPID0gQHRv
T2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUud2l0aCByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0ZXAgMi4KKyAgICB2YXIgbGVu
Z3RoID0gQHRvTGVuZ3RoKE8ubGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVs
YXRpdmVJbmRleCA9IEB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTsKKworICAgIC8vIFN0ZXAg
NC01LgorICAgIHZhciBhY3R1YWxJbmRleDsKKyAgICBpZiAocmVsYXRpdmVJbmRleCA+PSAwKQor
ICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0aXZlSW5kZXg7CisgICAgZWxzZQorICAgICAgICBh
Y3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0aXZlSW5kZXg7CisKKyAgICAvLyBTdGVwIDYuCisg
ICAgaWYgKGFjdHVhbEluZGV4ID49IGxlbmd0aCB8fCBhY3R1YWxJbmRleCA8IDApCisgICAgICAg
IEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4IG91dCBvZiBSYW5nZSIpOworCisgICAgLy8g
U3RlcCA3LgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZShsZW5ndGgpOworCisg
ICAgLy8gU3RlcCA4LTkKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7Cisg
ICAgICAgIGlmKGsgPT09IGFjdHVhbEluZGV4KQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBAcHV0QnlWYWxE
aXJlY3QocmVzdWx0LCBrLCBPW2tdKTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDEwLgorICAgIHJl
dHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4IDZkNDRlYjZjMTQxZTUwODJkZDUyYWVlMzVk
YzJjYzY5YTc3NWNlNzQuLjAzNmM3NzJhZjA5NGU4ZmM1ZjNiNGQyYmE2OTFlZmM2Yzg3ZDJhZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5
UHJvdG90eXBlLmpzCkBAIC0yMjYsMjcgKzIyNiwzMyBAQCBmdW5jdGlvbiB0eXBlZEFycmF5TWVy
Z2VTb3J0KGFycmF5LCB2YWx1ZUNvdW50LCBjb21wYXJhdG9yKQogICAgIH0KIH0KIAotZnVuY3Rp
b24gc29ydChjb21wYXJhdG9yKQorQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHR5cGVkQXJyYXlT
b3J0SGVscGVyKGFycmF5LCBjb21wYXJhdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAg
IGlmIChjb21wYXJhdG9yICE9PSBAdW5kZWZpbmVkICYmICFAaXNDYWxsYWJsZShjb21wYXJhdG9y
KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5zb3J0IHJl
cXVpcmVzIHRoZSBjb21wYXJhdG9yIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24gb3IgdW5kZWZp
bmVkIik7CiAKLSAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CisgICAg
dmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKGFycmF5KTsKICAgICBpZiAobGVuZ3RoIDwg
MikKLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIHJldHVybiBhcnJheTsKIAogICAgIC8v
IHR5cGVkQXJyYXlTb3J0IGlzIG5vdCBzYWZlIHdoZW4gdGhlIG90aGVyIHRocmVhZCBpcyBtb2Rp
ZnlpbmcgY29udGVudC4gU28gaWYgfHRoaXN8IGlzIFNoYXJlZEFycmF5QnVmZmVyLAogICAgIC8v
IHVzZSBKUy1pbXBsZW1lbnRlZCBzb3J0aW5nLgotICAgIGlmIChjb21wYXJhdG9yICE9PSBAdW5k
ZWZpbmVkIHx8IEBpc1NoYXJlZFR5cGVkQXJyYXlWaWV3KHRoaXMpKSB7CisgICAgaWYgKGNvbXBh
cmF0b3IgIT09IEB1bmRlZmluZWQgfHwgQGlzU2hhcmVkVHlwZWRBcnJheVZpZXcoYXJyYXkpKSB7
CiAgICAgICAgIGlmIChjb21wYXJhdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgY29t
cGFyYXRvciA9IEB0eXBlZEFycmF5RGVmYXVsdENvbXBhcmF0b3I7Ci0gICAgICAgIEB0eXBlZEFy
cmF5TWVyZ2VTb3J0KHRoaXMsIGxlbmd0aCwgY29tcGFyYXRvcik7CisgICAgICAgIEB0eXBlZEFy
cmF5TWVyZ2VTb3J0KGFycmF5LCBsZW5ndGgsIGNvbXBhcmF0b3IpOwogICAgIH0gZWxzZQotICAg
ICAgICBAdHlwZWRBcnJheVNvcnQodGhpcyk7CisgICAgICAgIEB0eXBlZEFycmF5U29ydChhcnJh
eSk7CiAKLSAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9u
IHNvcnQoY29tcGFyYXRvcikKK3sKKyAgICByZXR1cm4gQHR5cGVkQXJyYXlTb3J0SGVscGVyKHRo
aXMsIGNvbXBhcmF0b3IpOwogfQogCiBmdW5jdGlvbiBzdWJhcnJheShiZWdpbiwgZW5kKQpAQCAt
NDA0LDMgKzQxMCwxNDggQEAgZnVuY3Rpb24gYXQoaW5kZXgpCiAKICAgICByZXR1cm4gKGsgPj0g
MCAmJiBrIDwgbGVuZ3RoKSA/IHRoaXNba10gOiBAdW5kZWZpbmVkOwogfQorCitmdW5jdGlvbiB0
b1JldmVyc2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDItMy4KKyAg
ICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CisKKyAgICAvLyBTdGVwIDQu
CisgICAgdmFyIGNvbnN0cnVjdG9yID0gQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9y
KHRoaXMpOworICAgIHZhciByZXN1bHQgPSBuZXcgY29uc3RydWN0b3IobGVuZ3RoKTsKKworICAg
IC8vIFN0ZXAgNS02LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKKyAg
ICAgICAgdmFyIGZyb21WYWx1ZSA9IHRoaXNbbGVuZ3RoIC0gayAtIDFdOworICAgICAgICByZXN1
bHRba10gPSBmcm9tVmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVu
Y3Rpb24gdG9Tb3J0ZWQoY29tcGFyZWZuKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8v
IFN0ZXAgMS4KKyAgICBpZiAoY29tcGFyZWZuICE9PSBAdW5kZWZpbmVkICYmICFAaXNDYWxsYWJs
ZShjb21wYXJlZm4pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90
eXBlLnRvU29ydGVkIHJlcXVpcmVzIHRoZSBjb21wYXJlZm4gYXJndW1lbnQgdG8gYmUgYSBmdW5j
dGlvbiBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0ZXAgMy00LgorICAgIHZhciBsZW5ndGgg
PSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKKworICAgIC8vIFN0ZXAgNS02LgorICAgIHZhciBj
b25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAg
ICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDct
OC4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKQorICAgICAgICByZXN1bHRb
a10gPSB0aGlzW2tdOworCisgICAgLy8gU3RlcCA5LgorICAgIEB0eXBlZEFycmF5U29ydEhlbHBl
cihyZXN1bHQsIGNvbXBhcmVmbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlv
biB0b1NwbGljZWQoc3RhcnQsIGRlbGV0ZUNvdW50IC8qLCAuLi5pdGVtcyAqLykKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDItMy4KKyAgICB2YXIgbGVuZ3RoID0gQHR5cGVk
QXJyYXlMZW5ndGgodGhpcyk7CisKKyAgICAvLyBTdGVwIDQuCisgICAgdmFyIHJlbGF0aXZlU3Rh
cnQgPSBAdG9JbnRlZ2VyT3JJbmZpbml0eShzdGFydCk7CisKKyAgICAvLyBTdGVwIDUtNy4KKyAg
ICB2YXIgYWN0dWFsU3RhcnQ7CisgICAgaWYgKHJlbGF0aXZlU3RhcnQgPT09IC1ASW5maW5pdHkp
CisgICAgICAgIGFjdHVhbFN0YXJ0ID0gMDsKKyAgICBlbHNlIGlmIChyZWxhdGl2ZVN0YXJ0IDwg
MCkKKyAgICAgICAgYWN0dWFsU3RhcnQgPSBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0ID4gMCA/IGxl
bmd0aCArIHJlbGF0aXZlU3RhcnQgOiAwOworICAgIGVsc2UKKyAgICAgICAgYWN0dWFsU3RhcnQg
PSBAbWluKHJlbGF0aXZlU3RhcnQsIGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDgtMTAuCisgICAg
dmFyIGluc2VydENvdW50ID0gMDsKKyAgICB2YXIgYWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAw
OworICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgIGFjdHVhbERl
bGV0ZUNvdW50ID0gbGVuZ3RoIC0gYWN0dWFsU3RhcnQ7CisgICAgZWxzZSB7CisgICAgICAgIGlu
c2VydENvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgICAgICAgIHZhciBkYyA9IEB0b0lu
dGVnZXJPckluZmluaXR5KGRlbGV0ZUNvdW50KTsKKyAgICAgICAgZGMgPSBkYyA+IDAgPyBkYyA6
IDA7CisgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gQG1pbihkYywgbGVuZ3RoIC0gYWN0dWFs
U3RhcnQpOworICAgIH0KKworICAgIC8vIFN0ZXAgMTEuCisgICAgdmFyIG5ld0xlbiA9IGxlbmd0
aCArIGluc2VydENvdW50IC0gYWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICAvLyBTdGVwIDEyLgor
ICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0
aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKG5ld0xlbik7CisKKyAgICAv
LyBTdGVwIDEzLTE0LgorICAgIHZhciBrID0gMDsKKyAgICBmb3IgKDsgayA8IGFjdHVhbFN0YXJ0
OyBrKyspIHsKKyAgICAgICAgcmVzdWx0W2tdID0gdGhpc1trXTsKKyAgICB9CisKKyAgICAvLyBT
dGVwIDE1LgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zZXJ0Q291bnQ7IGkrKykgeworICAg
ICAgICByZXN1bHRba10gPSBhcmd1bWVudHNbaSArIDJdOworICAgICAgICBrKys7CisgICAgfQor
CisgICAgLy8gU3RlcCAxNi4KKyAgICBmb3IgKDsgayA8IG5ld0xlbjsgaysrKSB7CisgICAgICAg
IHZhciBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50IC0gaW5zZXJ0Q291bnQ7CisgICAgICAg
IHJlc3VsdFtrXSA9IHRoaXNbZnJvbV07CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworZnVuY3Rpb24gd2l0aChpbmRleCwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gU3RlcCAyLTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMp
OworCisgICAgLy8gU3RlcCA0LgorICAgIHZhciByZWxhdGl2ZUluZGV4ID0gQHRvSW50ZWdlck9y
SW5maW5pdHkoaW5kZXgpOworICAgIHZhciBhY3R1YWxJbmRleDsKKworICAgIC8vIFN0ZXAgNS02
LgorICAgIGlmIChyZWxhdGl2ZUluZGV4ID49IDApCisgICAgICAgIGFjdHVhbEluZGV4ID0gcmVs
YXRpdmVJbmRleDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbEluZGV4ID0gbGVuZ3RoICsgcmVs
YXRpdmVJbmRleDsKKworICAgIC8vIFN0ZXAgNy4KKyAgICBpZiAoQGlzRGV0YWNoZWQodGhpcykp
CisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLndpdGggY2Fs
bGVkIG9uIGFuIGRldGFjaGVkIGFycmF5Iik7CisgICAgaWYgKGFjdHVhbEluZGV4IDwgMCB8fCBh
Y3R1YWxJbmRleCA+PSBsZW5ndGgpCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGlu
ZGV4IG91dCBvZiByYW5nZSIpCisKKyAgICAvLyBTdGVwIDguCisgICAgdmFyIGNvbnN0cnVjdG9y
ID0gQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpOworICAgIHZhciByZXN1
bHQgPSBuZXcgY29uc3RydWN0b3IobGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgOS0xMC4KKyAgICBm
b3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIGlmIChrID09IGFjdHVh
bEluZGV4KQorICAgICAgICAgICAgcmVzdWx0W2tdID0gdmFsdWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAppbmRleCBkNDkzYzVlNzc3MGFjNTAxNmQyYTAxODIyMmMxNDVjYjcyN2Y0NDA4Li43Y2Fi
YWVmZmEwYjYyZmY5MjFmNDFjZDc1ZDYzYTM1MzExMThmMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMjIsNyArMTIyLDEy
IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGlmIChPcHRpb25zOjp1c2VBdE1ldGhvZCgpKQog
ICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlQXRD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2Rz
KCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU29ydGVkUHVibGljTmFtZSgpLCBhcnJh
eVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkud2l0
aFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVXaXRoQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkudG9TcGxpY2VkUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVRvU3BsaWNl
ZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvUmV2ZXJzZWRQdWJsaWNOYW1l
KCksIGFycmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmVudHJpZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRl
TmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZv
ckVhY2hQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CkBAIC0x
NDUsNiArMTUwLDkgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBPcHRpb25zOjp1c2VBcnJh
eUdyb3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91
cEJ5VG9NYXBQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLAorICAgICAgICBPcHRp
b25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50b1JldmVyc2VkUHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAg
T3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkgPyAmdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudG9Tb3J0ZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAg
ICBPcHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAg
ICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgp
CiAgICAgfTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIHVuc2NvcGFibGVOYW1lIDogdW5zY29wYWJs
ZU5hbWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDg4MjdiM2RlOThmZTA1ZmU1OGI5
MTcwNDI5ZTM4NjQ5OTVlMTlmNTguLjlkYWQwOTI4NzBkODFiMmFhZjEwNWQyMTRlNzJlYjQ3ODZl
MDMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBAIC00NzQsNiArNDc0LDEyIEBAIHZvaWQg
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnN1YmFycmF5LCB0eXBlZEFycmF5UHJvdG90eXBlU3Vi
YXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nLCB0eXBlZEFycmF5UHJvdG90eXBl
VG9Mb2NhbGVTdHJpbmdDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJy
YXlCeUNvcHlNZXRob2RzKCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJ3aXRoIiwgdHlwZWRBcnJheVByb3RvdHlwZVdpdGhDb2RlR2VuZXJhdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9SZXZlcnNl
ZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVUb1JldmVyc2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU29ydGVkIiwgdHlwZWRBcnJh
eVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU3BsaWNlZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVUb1Nw
bGljZWRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgfQogICAgIGlmIChPcHRpb25zOjp1c2VBdE1ldGhvZCgpKQog
ICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNOYW1lKCksIHR5cGVkQXJyYXlQcm90b3R5
cGVBdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKaW5kZXggYmY5ZDhhMzgzZjczNzlmYjFiOTljYTI0OGFhOTIwZGMxNTFmOWFjOC4uM2I0
NWI1MjQ2NjBkOGU5NmU5YmJkNzBjZDUzN2EzOTZmOGY4ODVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBj
YW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2wsIHVzZUFycmF5RmluZExh
c3RNZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZmluZExhc3QoKSBhbmQgZmluZExh
c3RJbmRleCgpIG1ldGhvZHMgb24gQXJyYXkgYW5kICVUeXBlZEFycmF5JS4iKSBcCiAgICAgdihC
b29sLCB1c2VBcnJheUdyb3VwQnlNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGdy
b3VwQnkoKSBhbmQgZ3JvdXBCeVRvTWFwKCkgbWV0aG9kcyBvbiBBcnJheS4iKSBcCiAgICAgdihC
b29sLCB1c2VBdE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBv
biBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKKyAgICB2KEJvb2wsIHVzZUNo
YW5nZUFycmF5QnlDb3B5TWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgd2l0aEF0
KCksIHdpdGhSZXZlcnNlZCgpLCB3aXRoU29ydGVkKCkgYW5kIHdpdGhTcGxpY2VkKCkgbWV0aG9k
cyBvbiBBcnJheSBhbmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJvb2wsIHVzZUhhc093biwg
dHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2
KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRs
IGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjkzMWQxMWNlYTgyZmMyOWNlODY2ZjJiMTg1Njlh
NzY4ZWE5NmI0Yi4uZWEzZDczMGY0YjhmNGQwMTQ0NTE4ZTRkODViNzRkNmZjOWRjNzI5MiAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wMS0yMSAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2NoYW5n
ZS1hcnJheS1ieS1jb3B5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKHNoYWxsb3dFcXVhbCk6CisgICAgICAgICogc3RyZXNz
L3R5cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNoYWxsb3dFcXVhbCk6CisgICAg
ICAgIChzZXF1ZW5jZS5uZXcuVWludDhBcnJheSk6CisgICAgICAgICogc3RyZXNzL3Vuc2NvcGFi
bGVzLmpzOgorCiAyMDIyLTAxLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLk5vdy5pbnN0YW50KCkKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2hhbmdlLWFycmF5LWJ5LWNvcHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM1Y2EyMmM2ODU0MzM0
ZDZkZDE3OGY4NmIyOWU0ZjE0NzkxNmMwZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCkBAIC0wLDAgKzEsMTE3IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzPTEiKQorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKCFzaGFsbG93RXF1YWwoYWN0dWFs
LCBleHBlY3RlZCkpeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0
ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAo
bWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAg
ICBpZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3Nh
Z2V9IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e1N0cmluZyhlcnJvcil9IGJ1dCBnb3QgJHttZXNzYWdlfWApOworICAgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0g
Yi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2YXIgc2VxdWVu
Y2UgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdOworCisvLyBBcnJheS5wcm90b3R5
cGUudG9SZXZlcnNlZCgpCit7CisgICAgbGV0IHJldmVyc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50
b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJzZWRTZXF1ZW5jZSwgWzEwLCA5LCA4LCA3
LCA2LCA1LCA0LCAzLCAyLCAxXSk7CisKKyAgICAvLyB8dGhpc3wgPSBudWxsLgorICAgIHNob3Vs
ZFRocm93KCgpID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9SZXZlcnNlZChudWxsLCAw
LCA1KSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXkucHJvdG90eXBlLnRvU29ydGVkKCkKK3sK
KyAgICB2YXIgdW5zb3J0ZWRTZXF1ZW5jZSA9IFs5LCAyLCAzLCA0LCA1NiwgMTIsIDBdOworICAg
IHZhciBzb3J0ZWRTZXF1ZW5jZSA9IHVuc29ydGVkU2VxdWVuY2UudG9Tb3J0ZWQoKTsKKyAgICBz
aG91bGRCZShzb3J0ZWRTZXF1ZW5jZSwgWzAsIDEyLCAyLCAzLCA0LCA1NiwgOV0pOworCisgICAg
Ly8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUu
dG9Tb3J0ZWQuY2FsbChudWxsKSwgVHlwZUVycm9yKTsKKworICAgIC8vIE5vbiBjYWxsYWJsZSBj
b21wYXJhdG9yLgorICAgIHZhciBub25DYWxsYWJsZUNvbXBhcmF0b3IgPSAiYSI7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4gdW5zb3J0ZWRTZXF1ZW5jZS50b1NvcnRlZChub25DYWxsYWJsZUNvbXBh
cmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisvLyBBcnJheS5wcm90b3R5cGUudG9TcGxpY2VkKCkK
K3sKKyAgICB2YXIgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOwor
ICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDksIDEwXSk7CisKKyAgICAv
LyBTdGFydCBtaXNzaW5nLgorICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVlbmNlLnRvU3BsaWNl
ZCgpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVuY2UpOworCisgICAgLy8g
RGVsZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9T
cGxpY2VkKDMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDNdKTsKKwor
ICAgIC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50
b1NwbGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVuY2UsIFtdKTsK
KworICAgIC8vIERlbGV0ZSBjb3VudCB1bmRlZmluZWQuCisgICAgc3BsaWNlZFNlcXVlbmNlID0g
c2VxdWVuY2UudG9TcGxpY2VkKDEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoc3BsaWNlZFNl
cXVlbmNlLCBzZXF1ZW5jZSk7CisKKyAgICAvLyBJbnNlcnRpb24KKyAgICBzcGxpY2VkU2VxdWVu
Y2UgPSBzZXF1ZW5jZS50b1NwbGljZWQoMywgNSwgMTEsIDEyLCAxMyk7CisgICAgc2hvdWxkQmUo
c3BsaWNlZFNlcXVlbmNlLCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKKworICAgIC8v
IHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBlLnRv
U3BsaWNlZC5jYWxsKG51bGwsIDAsIDUpLCBUeXBlRXJyb3IpOworCisgICAgLy8gTGVuZ3RoID49
IDJeNTMgLSAxLgorICAgIHZhciBhcnJheUxpa2UgPSB7fTsKKyAgICBhcnJheUxpa2UubGVuZ3Ro
ID0gMiAqKiA1MyAtIDE7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBlLnRv
U3BsaWNlZC5jYWxsKGFycmF5TGlrZSwgMCwgMCwgbnVsbCksIFR5cGVFcnJvcik7Cit9CisKKy8v
QXJyYXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZhciB3aXRoU2VxdWVuY2UgPSBzZXF1ZW5j
ZS53aXRoKDMsICJhIik7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBbMSwgMiwgMywgImEi
LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggbWlzc2luZy4KKyAgICB3aXRo
U2VxdWVuY2UgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBb
dW5kZWZpbmVkLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXgg
dW5kZWZpbmVkLgorICAgIHdpdGhTZXF1ZW5jZSA9IHNlcXVlbmNlLndpdGgodW5kZWZpbmVkLCAi
YSIpOworICAgIHNob3VsZEJlKHdpdGhTZXF1ZW5jZSwgWyJhIiwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisgICAgc2hvdWxkVGhyb3coKCkg
PT4gc2VxdWVuY2Uud2l0aCgtMTEsICJhIiksIFJhbmdlRXJyb3IpOworCisgICAgLy8gfHRoaXN8
ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUudG9SZXZlcnNl
ZC53aXRoKG51bGwsIDUsICJhIiksIFR5cGVFcnJvcik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5
cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MzEyZmEzMjUxODdiZGQ2
YTM3NzRlZDg3Y2FhM2I5NDYyZDZmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpAQCAtMCwwICsxLDEwNyBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKKworZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmICghc2hhbGxvd0VxdWFsKGFj
dHVhbCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAg
ICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHtt
ZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0
ZWQgJHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1gKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGgg
IT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHNl
cXVlbmNlID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7
CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQoreworICAgIHZhciByZXZl
cnNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2
ZXJzZWRUeXBlZEFycmF5LCBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdKTsKK30KKwor
Ly8gVHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQoKQoreworICAgIHZhciB1bnNvcnRlZFR5
cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheShbOSwgMiwgMywgNCwgNTYsIDEyLCAwXSk7CisgICAg
bGV0IHNvcnRlZFR5cGVkQXJyYXkgPSB1bnNvcnRlZFR5cGVkQXJyYXkudG9Tb3J0ZWQoKTsKKyAg
ICBzaG91bGRCZShzb3J0ZWRUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwgOSwgMTIsIDU2XSk7CisK
KyAgICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIgbm9uQ2FsbGFibGVDb21w
YXJhdG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29ydGVkVHlwZWRBcnJheS50
b1NvcnRlZChub25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisKKy8vIFR5
cGVkQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFyIHNwbGljZWRUeXBlZEFy
cmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBl
ZEFycmF5LCBbMSwgMiwgMywgOSwgMTBdKTsKKworICAgIC8vIFN0YXJ0IG1pc3NpbmcKKyAgICBz
cGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgpOworICAgIHNob3VsZEJlKHNw
bGljZWRUeXBlZEFycmF5LCBzZXF1ZW5jZSk7CisKKyAgICAvLyBEZWxldGUgY291bnQgbWlzc2lu
Zy4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzKTsKKyAgICBz
aG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDNdKTsKKworICAgIC8vIFN0YXJ0IHVu
ZGVmaW5lZC4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCh1bmRl
ZmluZWQpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbXSk7CisKKyAgICAvLyBE
ZWxldGUgY291bnQgdW5kZWZpbmVkCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50
b1NwbGljZWQoMywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwg
c2VxdWVuY2UpOworCisgICAgLy8gSW5zZXJ0aW9uLgorICAgIHNwbGljZWRUeXBlZEFycmF5ID0g
c2VxdWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAxMiwgMTMpOworICAgIHNob3VsZEJlKHNwbGlj
ZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKK30KKworLy8gVHlw
ZWRBcnJheS5wcm90b3R5cGUud2l0aCgpCit7CisgICAgdmFyIHdpdGhUeXBlZEFycmF5ID0gc2Vx
dWVuY2Uud2l0aCgzLCAwKTsKKyAgICBzaG91bGRCZSh3aXRoVHlwZWRBcnJheSwgWzEsIDIsIDMs
IDAsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbmRleCBtaXNzaW5nCisgICAgd2l0
aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJy
YXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggdW5k
ZWZpbmVkCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKHVuZGVmaW5lZCwgMCk7
CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5
LCAxMF0pOworCisgICAgLy8gSW52YWxpZCBpbmRleC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBz
ZXF1ZW5jZS53aXRoKC0xMSwgMCksIFJhbmdlRXJyb3IpOworCisgICAgLy8gRGV0YWNoZWQgYnVm
ZmVyLgorICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoc2VxdWVuY2UuYnVmZmVyKTsKKyAgICBzaG91
bGRUaHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKDAsIDApLCBUeXBlRXJyb3IpOworfQorCisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dW5zY29wYWJsZXMuanMKaW5kZXggODg0OTBkYmZlNGNhYWY4NzgyNzk3NzBmNjY1N2MzZDEzYTkz
MzU2NC4uNGRkZDg1ZDU5MmQwZmJiMmE2NjRkZDA4ODY2YjIxNGJlZGVhMzgyZiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdW5z
Y29wYWJsZXMuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRN
ZXRob2Q9MSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRob2Q9MSAtLXVzZUNoYW5n
ZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKIAogZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVk
KSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkBAIC0xMSw3ICsxMSw3IEBAIGZ1bmN0
aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogCiAgICAgdGVzdCh0eXBlb2YgdW5zY29wYWJs
ZXMsICJvYmplY3QiKTsKICAgICB0ZXN0KHVuc2NvcGFibGVzLl9fcHJvdG9fXywgdW5kZWZpbmVk
KTsKLSAgICB0ZXN0KFN0cmluZyhPYmplY3Qua2V5cyh1bnNjb3BhYmxlcykuc29ydCgpKSwgImF0
LGNvcHlXaXRoaW4sZW50cmllcyxmaWxsLGZpbmQsZmluZEluZGV4LGZpbmRMYXN0LGZpbmRMYXN0
SW5kZXgsZmxhdCxmbGF0TWFwLGluY2x1ZGVzLGtleXMsdmFsdWVzIik7CisgICAgdGVzdChTdHJp
bmcoT2JqZWN0LmtleXModW5zY29wYWJsZXMpLnNvcnQoKSksICJhdCxjb3B5V2l0aGluLGVudHJp
ZXMsZmlsbCxmaW5kLGZpbmRJbmRleCxmaW5kTGFzdCxmaW5kTGFzdEluZGV4LGZsYXQsZmxhdE1h
cCxpbmNsdWRlcyxrZXlzLHRvUmV2ZXJzZWQsdG9Tb3J0ZWQsdG9TcGxpY2VkLHZhbHVlcyIpOwog
fSgpKTsKIAogKGZ1bmN0aW9uICgpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450543</attachid>
            <date>2022-02-01 10:04:09 -0800</date>
            <delta_ts>2022-04-06 06:47:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220201233407.patch</filename>
            <type>text/plain</type>
            <size>30925</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmMwNTY4ZTA5ZjFkYTlmNjA2ZDAxNGEzNWY3NzQ4N2VlODAwNzU0Li4yZWU5Zjk1YjJkODIwNTM5
YTkxOGEwOWQ3ZDdkYWFhMTlkZjE4MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMi0wMi0wMSAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBwcm9wb3NhbCBDaGFuZ2UgQXJyYXkgQnkgQ29weS4gVGhlIHByb3Bvc2FsIHByb3Zp
ZGVzCisgICAgICAgIGFkZGl0aW9uYWwgbWV0aG9kcyBvbiBBcnJheS5wcm90b3R5cGUgYW5kIFR5
cGVkQXJyYXkucHJvdG90eXBlIHRvIGVuYWJsZQorICAgICAgICBjaGFuZ2VzIG9uIHRoZSBhcnJh
eSBieSByZXR1cm5pbmcgYSBuZXcgY29weSBvZiBpdCB3aXRoIHRoZSBjaGFuZ2UuCisgICAgICAg
IFNpbmNlLCBhIGNhbGwgdG8gaW50cmluc2ljIGZ1bmN0aW9uczogQXJyYXkucHJvdG90eXBlLnNv
cnQoY29tcGFyZWZuKSBhbmQKKyAgICAgICAgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zb3J0KGNv
bXBhcmVmbikgd2FzIG5lZWRlZCwgTGlua1RpbWVDb25zdGFudHMgaGF2ZQorICAgICAgICBiZWVu
IGFkZGVkIGZvciB0aGUgc2FtZS4KKyAgICAgICAgVGhlIHByb3Bvc2FsIGRldGFpbHMgY2FuIGJl
IGZvdW5kIGhlcmU6CisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNo
YW5nZS1hcnJheS1ieS1jb3B5CisKKyAgICAgICAgKiBidWlsdGlucy9BcnJheVByb3RvdHlwZS5q
czoKKyAgICAgICAgKHRvUmV2ZXJzZWQpOgorICAgICAgICAodG9Tb3J0ZWQpOgorICAgICAgICAo
dG9TcGxpY2VkKToKKyAgICAgICAgKHdpdGgpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM6CisgICAg
ICAgICh0b1JldmVyc2VkKToKKyAgICAgICAgKHRvU29ydGVkKToKKyAgICAgICAgKHRvU3BsaWNl
ZCk6CisgICAgICAgICh3aXRoKToKKyAgICAgICAgKiBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
Lmg6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisKIDIw
MjItMDEtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZlcnQgT1NBbGxvY2F0b3IgYmVoYXZpb3IgdG8gcHJlLVN0cnVjdHVyZS1BbGxvY2F0b3IgY2hh
bmdlIG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90
eXBlLmpzCmluZGV4IDI3NjhkMTQwMTc4MGU0YjUzMzM2MzMzNGFjZmIxYTgyNjUzZTllMTQuLjE3
YmI5MTFjOTMxZTA3MTNiMmNkZGE4ZmMyZTlkMDM0MzM5MDFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKQEAgLTc5MSwzICs3OTEs
MTYxIEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAgcmV0dXJuIChrID49IDAgJiYgayA8IGxl
bmd0aCkgPyBhcnJheVtrXSA6IEB1bmRlZmluZWQ7CiB9CisKK2Z1bmN0aW9uIHRvUmV2ZXJzZWQo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICB2YXIgYXJyYXkg
PSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS50b1JldmVyc2VkIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAyLgor
ICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIC8vIFN0ZXAg
My4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsKKworICAgIC8v
IFN0ZXAgNC01LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKKyAgICAg
ICAgdmFyIGZyb21WYWx1ZSA9IGFycmF5W2xlbmd0aCAtIGsgLSAxXTsKKyAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgZnJvbVZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDYu
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9Tb3J0ZWQoY29tcGFyZWZuKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICBpZiAoY29tcGFyZWZu
ICE9PSBAdW5kZWZpbmVkICYmICFAaXNDYWxsYWJsZShjb21wYXJlZm4pKQorICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFy
YXRvciBhcmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8g
U3RlcCAyLgorICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBl
LnRvU29ydGVkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
OworCisgICAgLy8gU3RlcCAzLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVu
Z3RoKTsKKworICAgIC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNp
emUobGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgNi03CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBs
ZW5ndGg7IGsrKykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlba10p
OworCisgICAgLy8gU3RlcCA4LgorICAgIEBhcnJheVNvcnQuQGNhbGwocmVzdWx0LCBjb21wYXJl
Zm4pOworCisgICAgLy8gU3RlcCA5LTEwIHVubmVjZXNzYXJ5LgorICAgIC8vIFN0ZXAgMTEuCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9TcGxpY2VkKHN0YXJ0LCBkZWxldGVD
b3VudCAvKiwgLi4uaXRlbXMgKi8pCit7CisgICAgInVzZSBzdHJpY3QiCisKKyAgICAvLyBTdGVw
IDEuCisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9T
cGxpY2VkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwor
CisgICAgLy8gU3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3Ro
KTsKKworICAgIC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVsYXRpdmVTdGFydCA9IEB0b0ludGVnZXJP
ckluZmluaXR5KHN0YXJ0KTsKKworICAgIHZhciBhY3R1YWxTdGFydDsKKyAgICAvLyBTdGVwIDQt
Ni4KKyAgICBpZiAocmVsYXRpdmVTdGFydCA9PT0gLUBJbmZpbml0eSkKKyAgICAgICAgYWN0dWFs
U3RhcnQgPSAwOworICAgIGVsc2UgaWYgKHJlbGF0aXZlU3RhcnQgPCAwKQorICAgICAgICBhY3R1
YWxTdGFydCA9IGxlbmd0aCArIHJlbGF0aXZlU3RhcnQgPiAwID8gbGVuZ3RoICsgcmVsYXRpdmVT
dGFydCA6IDA7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxTdGFydCA9IEBtaW4ocmVsYXRpdmVT
dGFydCwgbGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgNy4KKyAgICB2YXIgaW5zZXJ0Q291bnQgPSAw
OworICAgIHZhciBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIC8vIFN0ZXAgOC0xMC4KKyAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAw
OworICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgIGFjdHVhbERl
bGV0ZUNvdW50ID0gbGVuZ3RoIC0gYWN0dWFsU3RhcnQ7CisgICAgZWxzZSB7CisgICAgICAgIGlu
c2VydENvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgICAgICAgIHZhciB0ZW1wRGVsZXRl
Q291bnQgPSBAdG9JbnRlZ2VyT3JJbmZpbml0eShkZWxldGVDb3VudCk7CisgICAgICAgIHRlbXBE
ZWxldGVDb3VudCA9IHRlbXBEZWxldGVDb3VudCA+IDAgPyB0ZW1wRGVsZXRlQ291bnQgOiAwOwor
ICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IEBtaW4odGVtcERlbGV0ZUNvdW50LCBsZW5ndGgg
LSBhY3R1YWxTdGFydCk7CisgICAgfQorCisgICAgLy8gU3RlcCAxMS4KKyAgICB2YXIgbmV3TGVu
ID0gbGVuZ3RoICsgaW5zZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIC8vIFN0
ZXAgMTIuCisgICAgaWYgKG5ld0xlbiA+PSBATUFYX1NBRkVfSU5URUdFUikKKyAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheSBsZW5ndGggZXhjZWVkcyAyKio1MyAtIDEiKTsKKworICAgIC8v
IFN0ZXAgMTMuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKG5ld0xlbik7CisK
KyAgICAvLyBTdGVwIDE0LTE1LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYWN0dWFsU3RhcnQ7
IGsrKykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlba10pOworCisg
ICAgLy8gU3RlcCAxNi4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc2VydENvdW50OyBpKyss
IGsrKykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJndW1lbnRzW2kgKyAy
XSk7CisKKyAgICAvLyBTdGVwIDE3LgorICAgIGZvciAoOyBrIDwgbmV3TGVuOyBrKyspIHsKKyAg
ICAgICAgdmFyIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQgLSBpbnNlcnRDb3VudDsKKyAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlbZnJvbV0pOworICAgIH0KKwor
ICAgIC8vIFN0ZXAgMTguCisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorCitmdW5jdGlvbiB3aXRo
KGluZGV4LCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisg
ICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUud2l0aCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0
ZXAgMi4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICAv
LyBTdGVwIDMuCisgICAgdmFyIHJlbGF0aXZlSW5kZXggPSBAdG9JbnRlZ2VyT3JJbmZpbml0eShp
bmRleCk7CisKKyAgICAvLyBTdGVwIDQtNS4KKyAgICB2YXIgYWN0dWFsSW5kZXg7CisgICAgaWYg
KHJlbGF0aXZlSW5kZXggPj0gMCkKKyAgICAgICAgYWN0dWFsSW5kZXggPSByZWxhdGl2ZUluZGV4
OworICAgIGVsc2UKKyAgICAgICAgYWN0dWFsSW5kZXggPSBsZW5ndGggKyByZWxhdGl2ZUluZGV4
OworCisgICAgLy8gU3RlcCA2LgorICAgIGlmIChhY3R1YWxJbmRleCA+PSBsZW5ndGggfHwgYWN0
dWFsSW5kZXggPCAwKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJBcnJheSBpbmRleCBvdXQg
b2YgUmFuZ2UiKTsKKworICAgIC8vIFN0ZXAgNy4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5
V2l0aFNpemUobGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgOC05CisgICAgZm9yICh2YXIgayA9IDA7
IGsgPCBsZW5ndGg7IGsrKykgeworICAgICAgICBpZiAoayA9PT0gYWN0dWFsSW5kZXgpCisgICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFycmF5W2tdKTsKKyAgICB9
CisKKyAgICAvLyBTdGVwIDEwLgorICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggODBhODdlYjAwN2E5ZDM4
YzcxNTQyODk2NThmODgxMzg0NmJjODg4ZC4uYmJlZGRmNWVmOTQ4M2RjNzU2NTFiMmQ3ZDVkMWI2
NWQ2NTEyOTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaApAQCAtMTg5LDYgKzE4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG91
dE9mTGluZVJlYWN0aW9uQ291bnRzKSBcCiAgICAgbWFjcm8oZW1wdHlQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKSBcCiAgICAgbWFjcm8oc2VudGluZWxTdHJpbmcpIFwKKyAgICBtYWNybyhhcnJheVNv
cnQpIFwKKyAgICBtYWNybyh0eXBlZEFycmF5UHJvdG90eXBlU29ydCkgXAogCiAKIG5hbWVzcGFj
ZSBTeW1ib2xzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9U
eXBlZEFycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5
cGVkQXJyYXlQcm90b3R5cGUuanMKaW5kZXggNmQ0NGViNmMxNDFlNTA4MmRkNTJhZWUzNWRjMmNj
NjlhNzc1Y2U3NC4uMmMyZjMxMWVkMTMxZTQ2MjJkNjc2OTRlOWZjN2RmZDMxMGJhOWRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5
cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90
b3R5cGUuanMKQEAgLTQwNCwzICs0MDQsMTQ4IEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAg
cmV0dXJuIChrID49IDAgJiYgayA8IGxlbmd0aCkgPyB0aGlzW2tdIDogQHVuZGVmaW5lZDsKIH0K
KworZnVuY3Rpb24gdG9SZXZlcnNlZCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8g
U3RlcCAyLTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisg
ICAgLy8gU3RlcCA0LgorICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2lu
YWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxl
bmd0aCk7CisKKyAgICAvLyBTdGVwIDUtNi4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0
aDsgaysrKSB7CisgICAgICAgIHZhciBmcm9tVmFsdWUgPSB0aGlzW2xlbmd0aCAtIGsgLSAxXTsK
KyAgICAgICAgcmVzdWx0W2tdID0gZnJvbVZhbHVlOworICAgIH0KKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU29ydGVkKGNvbXBhcmVmbikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICAvLyBTdGVwIDEuCisgICAgaWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVmaW5lZCAm
JiAhQGlzQ2FsbGFibGUoY29tcGFyZWZuKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBl
ZEFycmF5LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFyZWZuIGFyZ3VtZW50
IHRvIGJlIGEgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIik7CisKKyAgICAvLyBTdGVwIDMtNC4KKyAg
ICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CisKKyAgICAvLyBTdGVwIDUt
Ni4KKyAgICB2YXIgY29uc3RydWN0b3IgPSBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0
b3IodGhpcyk7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBjb25zdHJ1Y3RvcihsZW5ndGgpOworCisg
ICAgLy8gU3RlcCA3LTguCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykKKyAg
ICAgICAgcmVzdWx0W2tdID0gdGhpc1trXTsKKworICAgIC8vIFN0ZXAgOS4KKyAgICBAdHlwZWRB
cnJheVByb3RvdHlwZVNvcnQuQGNhbGwocmVzdWx0LCBjb21wYXJlZm4pOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9TcGxpY2VkKHN0YXJ0LCBkZWxldGVDb3VudCAvKiwg
Li4uaXRlbXMgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAyLTMuCisg
ICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA0
LgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5maW5pdHkoc3RhcnQpOwor
CisgICAgLy8gU3RlcCA1LTcuCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIGlmIChyZWxhdGl2
ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFydCA9IDA7CisgICAgZWxz
ZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gbGVuZ3RoICsg
cmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0IDogMDsKKyAgICBlbHNl
CisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0LCBsZW5ndGgpOworCisg
ICAgLy8gU3RlcCA4LTEwLgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7CisgICAgdmFyIGFjdHVh
bERlbGV0ZUNvdW50OworCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApCisgICAgICAg
IGFjdHVhbERlbGV0ZUNvdW50ID0gMDsKKyAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09
PSAxKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IGxlbmd0aCAtIGFjdHVhbFN0YXJ0Owor
ICAgIGVsc2UgeworICAgICAgICBpbnNlcnRDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyOwor
ICAgICAgICB2YXIgdGVtcERlbGV0ZUNvdW50ID0gQHRvSW50ZWdlck9ySW5maW5pdHkoZGVsZXRl
Q291bnQpOworICAgICAgICB0ZW1wRGVsZXRlQ291bnQgPSB0ZW1wRGVsZXRlQ291bnQgPiAwID8g
dGVtcERlbGV0ZUNvdW50IDogMDsKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBAbWluKHRl
bXBEZWxldGVDb3VudCwgbGVuZ3RoIC0gYWN0dWFsU3RhcnQpOworICAgIH0KKworICAgIC8vIFN0
ZXAgMTEuCisgICAgdmFyIG5ld0xlbiA9IGxlbmd0aCArIGluc2VydENvdW50IC0gYWN0dWFsRGVs
ZXRlQ291bnQ7CisKKyAgICAvLyBTdGVwIDEyLgorICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0eXBl
ZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0gbmV3
IGNvbnN0cnVjdG9yKG5ld0xlbik7CisKKyAgICAvLyBTdGVwIDEzLTE0LgorICAgIHZhciBrID0g
MDsKKyAgICBmb3IgKDsgayA8IGFjdHVhbFN0YXJ0OyBrKyspIHsKKyAgICAgICAgcmVzdWx0W2td
ID0gdGhpc1trXTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDE1LgorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgaW5zZXJ0Q291bnQ7IGkrKykgeworICAgICAgICByZXN1bHRba10gPSBhcmd1bWVudHNb
aSArIDJdOworICAgICAgICBrKys7CisgICAgfQorCisgICAgLy8gU3RlcCAxNi4KKyAgICBmb3Ig
KDsgayA8IG5ld0xlbjsgaysrKSB7CisgICAgICAgIHZhciBmcm9tID0gayArIGFjdHVhbERlbGV0
ZUNvdW50IC0gaW5zZXJ0Q291bnQ7CisgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNbZnJvbV07Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gd2l0aChpbmRleCwgdmFs
dWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAyLTMuCisgICAgdmFyIGxl
bmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA0LgorICAgIHZh
ciByZWxhdGl2ZUluZGV4ID0gQHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpOworICAgIHZhciBh
Y3R1YWxJbmRleDsKKworICAgIC8vIFN0ZXAgNS02LgorICAgIGlmIChyZWxhdGl2ZUluZGV4ID49
IDApCisgICAgICAgIGFjdHVhbEluZGV4ID0gcmVsYXRpdmVJbmRleDsKKyAgICBlbHNlCisgICAg
ICAgIGFjdHVhbEluZGV4ID0gbGVuZ3RoICsgcmVsYXRpdmVJbmRleDsKKworICAgIC8vIFN0ZXAg
Ny4KKyAgICBpZiAoQGlzRGV0YWNoZWQodGhpcykpCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3Io
IlR5cGVkQXJyYXkucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIGFuIGRldGFjaGVkIGFycmF5Iik7
CisgICAgaWYgKGFjdHVhbEluZGV4IDwgMCB8fCBhY3R1YWxJbmRleCA+PSBsZW5ndGgpCisgICAg
ICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4IG91dCBvZiByYW5nZSIpCisKKyAgICAv
LyBTdGVwIDguCisgICAgdmFyIGNvbnN0cnVjdG9yID0gQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENv
bnN0cnVjdG9yKHRoaXMpOworICAgIHZhciByZXN1bHQgPSBuZXcgY29uc3RydWN0b3IobGVuZ3Ro
KTsKKworICAgIC8vIFN0ZXAgOS0xMC4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsg
aysrKSB7CisgICAgICAgIGlmIChrID09IGFjdHVhbEluZGV4KQorICAgICAgICAgICAgcmVzdWx0
W2tdID0gdmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNb
a107CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IGU2NmU4ZmRiMTZhZjBm
Njg5ZjBhYmVhNDgwYWVjYjQ1MmFjOGI5ZjEuLmFiYjJkODhkMmZhZTRjNWI1YjI5NmZlYjUxZGNi
ZDIzZjZiNTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
aW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaApAQCAtMTE3LDcgKzExNyw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVsbHB0cikgXAogICAgIHYoZW1wdHlQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLCBudWxscHRyKSBcCiAgICAgdihzZW50aW5lbFN0cmluZywgbnVs
bHB0cikgXAotCisgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlQ
cm90b3R5cGVTb3J0LCBudWxscHRyKSBcCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09O
U1RBTlQobmFtZSwgY29kZSkgbmFtZSwKIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGlu
dDMyX3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IGJkNjU2NGM2YjRjOGYzMTczMzhjOTkwODg1NDQ3NjU2MDFiZmZhOTQuLjI4
YjQxMDMxYWJjNDY2NjAyNDE4ZTdjYzFhNmE5MzVjZTdkZmVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEyMiw3ICsxMjIs
MTIgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkp
CiAgICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVB
dENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKLQorICAgIGlmIChPcHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhv
ZHMoKSkgeworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudG9Tb3J0ZWRQdWJsaWNOYW1lKCksIGFy
cmF5UHJvdG90eXBlVG9Tb3J0ZWRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIEpTQ19CVUlMVElOX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS53
aXRoUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVdpdGhDb2RlR2VuZXJhdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlVG9TcGxp
Y2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudG9SZXZlcnNlZFB1YmxpY05h
bWUoKSwgYXJyYXlQcm90b3R5cGVUb1JldmVyc2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIH0KICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZh
dGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Zm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKQEAg
LTE0NSw2ICsxNTAsOSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6OnVzZUFy
cmF5R3JvdXBCeU1ldGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdy
b3VwQnlUb01hcFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSwKICAgICAgICAgJnZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksCisgICAgICAgIE9w
dGlvbnM6OnVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcygpID8gJnZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnRvUmV2ZXJzZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAg
ICBPcHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS50b1NvcnRlZFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCisgICAg
ICAgIE9wdGlvbnM6OnVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcygpID8gJnZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU3BsaWNlZFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCiAg
ICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1l
KCkKICAgICB9OwogICAgIGZvciAoY29uc3QgYXV0byogdW5zY29wYWJsZU5hbWUgOiB1bnNjb3Bh
YmxlTmFtZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IDZmYjgwNDQxY2JjYWU3MDc2OWI4ODkwNjFjY2Q4ZjBmNTkxZWRi
M2EuLjMxZmEzOWI4ZGExODg0YmJiZGUyNGMxZDNmZGY0YzM3M2I2MGZjMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjI4
LDYgKzIyOCw3IEBACiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBcCiAgICAg
bWFjcm8oc21hbGxlc3RVbml0KSBcCisgICAgbWFjcm8oc29ydCkgXAogICAgIG1hY3JvKHNvdXJj
ZSkgXAogICAgIG1hY3JvKHNvdXJjZUNvZGUpIFwKICAgICBtYWNybyhzb3VyY2VVUkwpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAyOGEyMWRhNjZlMGRmMjg2NmU5OGE2OTM2YmU3ZDcxMTE4ZDFkMWNlLi5mZDY5YjAyZjE5ZTNj
ZDQwMGY4N2RiNDNiMmFjOWFiOTE5N2I0YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzMwLDYgKzEzMzAsMTggQEAgY2Fw
aXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1
cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgaGFzT3duUHJvcGVydHlGdW5jdGlvbikpOwogICAgICAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGhhc093blByb3BlcnR5RnVuY3Rpb24pKTsKICAgICB9CisgICAgeworICAgICAgICBKU1Zh
bHVlIGFycmF5U29ydCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYXJyYXlQcm90b3R5cGUoKS0+Z2V0
KHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNvcnRQdWJsaWNOYW1lKCkp
KTsKKyAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBhcnJheVNvcnQpKTsK
KyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6YXJyYXlTb3J0KV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGFycmF5U29ydCkpOworICAgIH0KKyAgICB7CisgICAgICAgIEpTVmFsdWUgdHlwZWRBcnJheVBy
b3RvdHlwZVNvcnQgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHR5cGVkQXJyYXlWaWV3UHJvdG90eXBl
KCktPmdldCh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3J0KSk7CisgICAgICAgIGNhdGNoU2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFqc0R5bmFt
aWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdHlwZWRBcnJheVByb3RvdHlwZVNvcnQpKTsKKyAgICAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dHlwZWRBcnJheVByb3RvdHlwZVNvcnQpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1
bmN0aW9uKj4odHlwZWRBcnJheVByb3RvdHlwZVNvcnQpKTsKKyAgICB9CiAKICNkZWZpbmUgSU5J
VF9QUklWQVRFX0dMT0JBTChmdW5jTmFtZSwgY29kZSkgXAogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDFiMWQ5YjU1
M2M3NDcyYmViYjY3NDg5ZDkyYzc3YTNkOTM2OTZkMmEuLmU4MWZhZGQwOGNmZmI5ZGZhOGIxMWEx
YWVhNTZmN2I4YzQ0NzBjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtNzU1LDYgKzc1NSw3IEBAIHB1YmxpYzoKICAgICBKU1Byb21p
c2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBBc3luY0dlbmVyYXRvclByb3RvdHlwZSogYXN5bmNHZW5l
cmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogYXN5bmNHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUq
IHR5cGVkQXJyYXlWaWV3UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlZEFycmF5UHJv
dG8uZ2V0KHRoaXMpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhT
Y29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggODgy
N2IzZGU5OGZlMDVmZTU4YjkxNzA0MjllMzg2NDk5NWUxOWY1OC4uOTQ2MTU2ZTgzZjgwMDRmNzVh
MmI4YzQzN2QyNzViYWQyYjNhZGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTQ0OCw3
ICs0NDgsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjb3B5V2l0aGluIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNDb3B5V2l0aGluLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMik7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJldmVyeSIsIHR5cGVkQXJyYXlQcm90b3R5cGVFdmVyeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbHRlciIsIHR5cGVkQXJyYXlQcm90
b3R5cGVGaWx0ZXJDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJzb3J0IiwgdHlwZWRBcnJheVByb3RvdHlwZVNvcnRDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnNvcnQsIHR5cGVkQXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVu
Y0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmNsdWRlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbGxQdWJsaWNOYW1lKCksIHR5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jRmlsbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOwpAQCAtNDc0LDYgKzQ3NCwxMiBAQCB2b2lkIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5zdWJhcnJheSwgdHlwZWRBcnJheVByb3RvdHlwZVN1YmFycmF5Q29kZUdl
bmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZywgdHlwZWRBcnJheVByb3RvdHlwZVRvTG9jYWxlU3Ry
aW5nQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogCisgICAgaWYgKE9wdGlvbnM6OnVzZUNoYW5nZUFycmF5QnlDb3B5TWV0
aG9kcygpKSB7CisgICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tigid2l0aCIsIHR5cGVkQXJyYXlQcm90b3R5cGVXaXRoQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvUmV2ZXJzZWQiLCB0eXBlZEFy
cmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b1NvcnRlZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVU
b1NvcnRlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJ0b1NwbGljZWQiLCB0eXBlZEFycmF5UHJvdG90eXBlVG9TcGxpY2VkQ29kZUdl
bmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOworICAgIH0KICAgICBpZiAoT3B0aW9uczo6dXNlQXRNZXRob2QoKSkKICAgICAgICAgSlND
X0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmF0UHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG90eXBlQXRDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IDJjMTdiZmYzOTBkZDcyMmRhZmVkZjMyMjExNmYzNDI4MGFhYjgxYWQuLjY0NDNkZDM1OTIzMDcy
MWNkYzg3MDY3NmU5NjY5YjI5ZTU1NjUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTQwLDYgKzU0MCw3IEBAIGJvb2wgY2FuVXNlV2ViQXNz
ZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgdihCb29sLCB1c2VBcnJheUZpbmRMYXN0TWV0aG9kLCB0
cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGZpbmRMYXN0KCkgYW5kIGZpbmRMYXN0SW5kZXgoKSBt
ZXRob2RzIG9uIEFycmF5IGFuZCAlVHlwZWRBcnJheSUuIikgXAogICAgIHYoQm9vbCwgdXNlQXJy
YXlHcm91cEJ5TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGdyb3VwQnkoKSBhbmQg
Z3JvdXBCeVRvTWFwKCkgbWV0aG9kcyBvbiBBcnJheS4iKSBcCiAgICAgdihCb29sLCB1c2VBdE1l
dGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBvbiBBcnJheSwgJVR5
cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKKyAgICB2KEJvb2wsIHVzZUNoYW5nZUFycmF5QnlD
b3B5TWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgd2l0aEF0KCksIHdpdGhSZXZl
cnNlZCgpLCB3aXRoU29ydGVkKCkgYW5kIHdpdGhTcGxpY2VkKCkgbWV0aG9kcyBvbiBBcnJheSBh
bmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFs
LCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUlt
cG9ydEFzc2VydGlvbiwgZmFsc2UsIE5vcm1hbCwgIkVuYWJsZSBpbXBvcnQgYXNzZXJ0aW9uLiIp
IFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3Nl
IHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhMTExMjIyMTA5N2ExNDFiZWZiOWEzY2U2
OWY5ZWExMTg1ZDJmYjA5Li5lNGY5ZjE5MGEwODM1NDlmZDMxNzkyNzZiY2NiMmIyMGQ4MTc1ODYz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIyLTAyLTAxICBBZGl0aSBTaW5naCAgPGFzaW5naEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBDaGFuZ2UgQXJyYXkgYnkgY29weSBwcm9wb3NhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
Y2hhbmdlLWFycmF5LWJ5LWNvcHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hhbGxvd0VxdWFsKToKKyAgICAgICAgKHNo
b3VsZFRocm93LkFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9SZXZlcnNlZCk6CisgICAgICAg
ICogc3RyZXNzL3R5cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNoYWxsb3dFcXVh
bCk6CisgICAgICAgIChzZXF1ZW5jZS5uZXcuVWludDhBcnJheSk6CisgICAgICAgICogc3RyZXNz
L3Vuc2NvcGFibGVzLmpzOgorCiAyMDIyLTAxLTI4ICBUb20gVGFydGFyaW4gIDx0b21AbGVhbmlu
Z3RlY2guY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBXQVNNIGJyYW5jaCBo
aW50aW5nIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXJyYXkt
YnktY29weS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJjNWNhMjJjNjg1NDMzNGQ2ZGQxNzhmODZiMjllNGYxNDc5MTZjMGUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXJyYXktYnktY29weS5qcwpAQCAtMCww
ICsxLDExNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0
aG9kcz0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
ICghc2hhbGxvd0VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAg
bGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9m
IGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5
cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBp
ZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBS
ZWdFeHBdJykgeworICAgICAgICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJy
b3IpfScgdG8gbWF0Y2ggJHttZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1g
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsK
KyAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ld
ICE9PSBiW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordmFyIHNlcXVlbmNlID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
XTsKKworLy8gQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQoreworICAgIGxldCByZXZlcnNl
ZFNlcXVlbmNlID0gc2VxdWVuY2UudG9SZXZlcnNlZCgpOworICAgIHNob3VsZEJlKHJldmVyc2Vk
U2VxdWVuY2UsIFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMV0pOworCisgICAgLy8gfHRo
aXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUudG9TcGxp
Y2VkLnRvUmV2ZXJzZWQobnVsbCwgMCwgNSksIFR5cGVFcnJvcik7Cit9CisKKy8vIEFycmF5LnBy
b3RvdHlwZS50b1NvcnRlZCgpCit7CisgICAgdmFyIHVuc29ydGVkU2VxdWVuY2UgPSBbOSwgMiwg
MywgNCwgNTYsIDEyLCAwXTsKKyAgICB2YXIgc29ydGVkU2VxdWVuY2UgPSB1bnNvcnRlZFNlcXVl
bmNlLnRvU29ydGVkKCk7CisgICAgc2hvdWxkQmUoc29ydGVkU2VxdWVuY2UsIFswLCAxMiwgMiwg
MywgNCwgNTYsIDldKTsKKworICAgIC8vIHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3co
KCkgPT4gQXJyYXkucHJvdG90eXBlLnRvU29ydGVkLmNhbGwobnVsbCksIFR5cGVFcnJvcik7CisK
KyAgICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIgbm9uQ2FsbGFibGVDb21w
YXJhdG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29ydGVkU2VxdWVuY2UudG9T
b3J0ZWQobm9uQ2FsbGFibGVDb21wYXJhdG9yKSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXku
cHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFyIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVl
bmNlLnRvU3BsaWNlZCgzLCA1KTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVuY2UsIFsxLCAy
LCAzLCA5LCAxMF0pOworCisgICAgLy8gU3RhcnQgbWlzc2luZy4KKyAgICBzcGxpY2VkU2VxdWVu
Y2UgPSBzZXF1ZW5jZS50b1NwbGljZWQoKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVuY2Us
IHNlcXVlbmNlKTsKKworICAgIC8vIERlbGV0ZSBjb3VudCBtaXNzaW5nLgorICAgIHNwbGljZWRT
ZXF1ZW5jZSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2Vx
dWVuY2UsIFsxLCAyLCAzXSk7CisKKyAgICAvLyBTdGFydCB1bmRlZmluZWQuCisgICAgc3BsaWNl
ZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
c3BsaWNlZFNlcXVlbmNlLCBbXSk7CisKKyAgICAvLyBEZWxldGUgY291bnQgdW5kZWZpbmVkLgor
ICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgxLCB1bmRlZmluZWQpOwor
ICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVuY2UpOworCisgICAgLy8gSW5zZXJ0
aW9uCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAx
MiwgMTMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDExLCAxMiwg
MTMsIDksIDEwXSk7CisKKyAgICAvLyB8dGhpc3wgPSBudWxsLgorICAgIHNob3VsZFRocm93KCgp
ID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQuY2FsbChudWxsLCAwLCA1KSwgVHlwZUVycm9y
KTsKKworICAgIC8vIExlbmd0aCA+PSAyXjUzIC0gMS4KKyAgICB2YXIgYXJyYXlMaWtlID0ge307
CisgICAgYXJyYXlMaWtlLmxlbmd0aCA9IDIgKiogNTMgLSAxOworICAgIHNob3VsZFRocm93KCgp
ID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQuY2FsbChhcnJheUxpa2UsIDAsIDAsIG51bGwp
LCBUeXBlRXJyb3IpOworfQorCisvL0FycmF5LnByb3RvdHlwZS53aXRoKCkKK3sKKyAgICB2YXIg
d2l0aFNlcXVlbmNlID0gc2VxdWVuY2Uud2l0aCgzLCAiYSIpOworICAgIHNob3VsZEJlKHdpdGhT
ZXF1ZW5jZSwgWzEsIDIsIDMsICJhIiwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKworICAgIC8vIElu
ZGV4IG1pc3NpbmcuCisgICAgd2l0aFNlcXVlbmNlID0gc2VxdWVuY2Uud2l0aCgpOworICAgIHNo
b3VsZEJlKHdpdGhTZXF1ZW5jZSwgW3VuZGVmaW5lZCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
MTBdKTsKKworICAgIC8vIEluZGV4IHVuZGVmaW5lZC4KKyAgICB3aXRoU2VxdWVuY2UgPSBzZXF1
ZW5jZS53aXRoKHVuZGVmaW5lZCwgImEiKTsKKyAgICBzaG91bGRCZSh3aXRoU2VxdWVuY2UsIFsi
YSIsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbnZhbGlkIGluZGV4
LgorICAgIHNob3VsZFRocm93KCgpID0+IHNlcXVlbmNlLndpdGgoLTExLCAiYSIpLCBSYW5nZUVy
cm9yKTsKKworICAgIC8vIHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJy
YXkucHJvdG90eXBlLnRvUmV2ZXJzZWQud2l0aChudWxsLCA1LCAiYSIpLCBUeXBlRXJyb3IpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktY2hhbmdlLWJ5LWNvcHku
anMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNzMxMmZhMzI1MTg3YmRkNmEzNzc0ZWQ4N2NhYTNiOTQ2MmQ2ZjZjCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktY2hhbmdlLWJ5LWNvcHkuanMKQEAg
LTAsMCArMSwxMDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDaGFuZ2VBcnJheUJ5Q29w
eU1ldGhvZHM9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoIXNoYWxsb3dFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSl7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgewor
ICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFu
Y2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJy
b3JUeXBlLm5hbWV9IWApOworICAgIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIHsKKyAgICAg
ICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmpl
Y3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAgIGlmICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJv
cikpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5n
KGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2FnZX0hYCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7U3RyaW5nKGVycm9yKX0gYnV0IGdvdCAke21lc3Nh
Z2V9YCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNoYWxsb3dFcXVhbChhLCBi
KSB7CisgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAo
YVtpXSAhPT0gYltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZhciBzZXF1ZW5jZSA9IG5ldyBVaW50OEFycmF5KFsxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisvLyBUeXBlZEFycmF5LnByb3RvdHlwZS50b1JldmVy
c2VkKCkKK3sKKyAgICB2YXIgcmV2ZXJzZWRUeXBlZEFycmF5ID0gc2VxdWVuY2UudG9SZXZlcnNl
ZCgpOworICAgIHNob3VsZEJlKHJldmVyc2VkVHlwZWRBcnJheSwgWzEwLCA5LCA4LCA3LCA2LCA1
LCA0LCAzLCAyLCAxXSk7Cit9CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvU29ydGVkKCkK
K3sKKyAgICB2YXIgdW5zb3J0ZWRUeXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoWzksIDIsIDMs
IDQsIDU2LCAxMiwgMF0pOworICAgIGxldCBzb3J0ZWRUeXBlZEFycmF5ID0gdW5zb3J0ZWRUeXBl
ZEFycmF5LnRvU29ydGVkKCk7CisgICAgc2hvdWxkQmUoc29ydGVkVHlwZWRBcnJheSwgWzAsIDIs
IDMsIDQsIDksIDEyLCA1Nl0pOworCisgICAgLy8gTm9uIGNhbGxhYmxlIGNvbXBhcmF0b3IuCisg
ICAgdmFyIG5vbkNhbGxhYmxlQ29tcGFyYXRvciA9ICJhIjsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiB1bnNvcnRlZFR5cGVkQXJyYXkudG9Tb3J0ZWQobm9uQ2FsbGFibGVDb21wYXJhdG9yKSwgVHlw
ZUVycm9yKTsKK30KKworCisvLyBUeXBlZEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQoKQorewor
ICAgIHZhciBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzLCA1KTsKKyAg
ICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDMsIDksIDEwXSk7CisKKyAgICAv
LyBTdGFydCBtaXNzaW5nCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1NwbGlj
ZWQoKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgc2VxdWVuY2UpOworCisgICAg
Ly8gRGVsZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5j
ZS50b1NwbGljZWQoMyk7CisgICAgc2hvdWxkQmUoc3BsaWNlZFR5cGVkQXJyYXksIFsxLCAyLCAz
XSk7CisKKyAgICAvLyBTdGFydCB1bmRlZmluZWQuCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBz
ZXF1ZW5jZS50b1NwbGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRB
cnJheSwgW10pOworCisgICAgLy8gRGVsZXRlIGNvdW50IHVuZGVmaW5lZAorICAgIHNwbGljZWRU
eXBlZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxk
QmUoc3BsaWNlZFR5cGVkQXJyYXksIHNlcXVlbmNlKTsKKworICAgIC8vIEluc2VydGlvbi4KKyAg
ICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzLCA1LCAxMSwgMTIsIDEz
KTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDMsIDExLCAxMiwgMTMs
IDksIDEwXSk7Cit9CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZh
ciB3aXRoVHlwZWRBcnJheSA9IHNlcXVlbmNlLndpdGgoMywgMCk7CisgICAgc2hvdWxkQmUod2l0
aFR5cGVkQXJyYXksIFsxLCAyLCAzLCAwLCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8g
SW5kZXggbWlzc2luZworICAgIHdpdGhUeXBlZEFycmF5ID0gc2VxdWVuY2Uud2l0aCgpOworICAg
IHNob3VsZEJlKHdpdGhUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBd
KTsKKworICAgIC8vIEluZGV4IHVuZGVmaW5lZAorICAgIHdpdGhUeXBlZEFycmF5ID0gc2VxdWVu
Y2Uud2l0aCh1bmRlZmluZWQsIDApOworICAgIHNob3VsZEJlKHdpdGhUeXBlZEFycmF5LCBbMCwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisg
ICAgc2hvdWxkVGhyb3coKCkgPT4gc2VxdWVuY2Uud2l0aCgtMTEsIDApLCBSYW5nZUVycm9yKTsK
KworICAgIC8vIERldGFjaGVkIGJ1ZmZlci4KKyAgICB0cmFuc2ZlckFycmF5QnVmZmVyKHNlcXVl
bmNlLmJ1ZmZlcik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2VxdWVuY2Uud2l0aCgwLCAwKSwg
VHlwZUVycm9yKTsKK30KKworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy91bnNjb3BhYmxl
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzCmluZGV4IDE4ZjZiZjkyNDQyODQw
NjdmYWE2ZjQ1ZjRkOGMzYjg5ZGQ5NTNmOWUuLmYxZDJiNjk1ZTQ4MzVlYjQ3ZDU3YzFmOTU1NWE1
MGMxNzk0MDU4YmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZUF0TWV0aG9kPTEiKQorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZUF0TWV0aG9kPTEgLS11c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHM9MSIpCiAKIGZ1bmN0aW9u
IHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQpA
QCAtMTEsNyArMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKIAogICAg
IHRlc3QodHlwZW9mIHVuc2NvcGFibGVzLCAib2JqZWN0Iik7CiAgICAgdGVzdCh1bnNjb3BhYmxl
cy5fX3Byb3RvX18sIHVuZGVmaW5lZCk7Ci0gICAgdGVzdChTdHJpbmcoT2JqZWN0LmtleXModW5z
Y29wYWJsZXMpLnNvcnQoKSksICJhdCxjb3B5V2l0aGluLGVudHJpZXMsZmlsbCxmaW5kLGZpbmRJ
bmRleCxmaW5kTGFzdCxmaW5kTGFzdEluZGV4LGZsYXQsZmxhdE1hcCxncm91cEJ5LGdyb3VwQnlU
b01hcCxpbmNsdWRlcyxrZXlzLHZhbHVlcyIpOworICAgIHRlc3QoU3RyaW5nKE9iamVjdC5rZXlz
KHVuc2NvcGFibGVzKS5zb3J0KCkpLCAiYXQsY29weVdpdGhpbixlbnRyaWVzLGZpbGwsZmluZCxm
aW5kSW5kZXgsZmluZExhc3QsZmluZExhc3RJbmRleCxmbGF0LGZsYXRNYXAsZ3JvdXBCeSxncm91
cEJ5VG9NYXAsaW5jbHVkZXMsa2V5cyx0b1JldmVyc2VkLHRvU29ydGVkLHRvU3BsaWNlZCx2YWx1
ZXMiKTsKIH0oKSk7CiAKIChmdW5jdGlvbiAoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456816</attachid>
            <date>2022-04-06 06:47:37 -0700</date>
            <delta_ts>2022-04-09 02:30:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220406191734.patch</filename>
            <type>text/plain</type>
            <size>32232</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDcwZTAwYWRkMThiNWY2NTI3NzFkZGE5OThlNDlmYzFkMzZmM2ZhLi42YzQ0NGI3MGY5M2UzOWE5
ZGNlNWQzNjliMTYwNjY0MjgzYzFkNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMi0wNC0wNiAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgcHJvcG9zYWwgQ2hhbmdlIEFycmF5IEJ5IENvcHkuIFRoZSBwcm9wb3NhbCBwcm92aWRl
cyBhZGRpdGlvbmFsIAorICAgICAgICBtZXRob2RzIG9uIEFycmF5LnByb3RvdHlwZSBhbmQgVHlw
ZWRBcnJheS5wcm90b3R5cGUgdG8gZW5hYmxlIGNoYW5nZXMgb24gdGhlIGFycmF5IGJ5IAorICAg
ICAgICByZXR1cm5pbmcgYSBuZXcgY29weSBvZiBpdCB3aXRoIHRoZSBjaGFuZ2UuCisgICAgICAg
IFNpbmNlLCBhIGNhbGwgdG8gaW50cmluc2ljIGZ1bmN0aW9uczogQXJyYXkucHJvdG90eXBlLnNv
cnQoY29tcGFyZWZuKSBhbmQgCisgICAgICAgICVUeXBlZEFycmF5JS5wcm90b3R5cGUuc29ydChj
b21wYXJlZm4pIHdhcyBuZWVkZWQsIExpbmtUaW1lQ29uc3RhbnRzIGhhdmUKKyAgICAgICAgYmVl
biBhZGRlZCBmb3IgdGhlIHNhbWUuCisgICAgICAgIFRoZSBwcm9wb3NhbCBkZXRhaWxzIGNhbiBi
ZSBmb3VuZCBoZXJlOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1j
aGFuZ2UtYXJyYXktYnktY29weQorCisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUu
anM6CisgICAgICAgICh0b1JldmVyc2VkKToKKyAgICAgICAgKHRvU29ydGVkKToKKyAgICAgICAg
KHRvU3BsaWNlZCk6CisgICAgICAgICh3aXRoKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAg
ICAgICAodG9SZXZlcnNlZCk6CisgICAgICAgICh0b1NvcnRlZCk6CisgICAgICAgICh0b1NwbGlj
ZWQpOgorICAgICAgICAod2l0aCk6CisgICAgICAgIChzb3J0KToKKyAgICAgICAgKiBieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp0eXBlZEFycmF5UHJvdG9Tb3J0IGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIyLTA0LTA2ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzIG1vZGUgdG8g
dW5ib3hEb3VibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcwppbmRleCAzMzA3YTZkYzJkNGJiY2FjNDBiMDY3ZTZlZWQ4MGVlNWIyY2U3YzA4
Li5kMWU3YzA3OTJhYWU4NTBkNzhlMDliY2JhNzk5NjZhMmMxOWFlMGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC03OTUsMyAr
Nzk1LDE1OSBAQCBmdW5jdGlvbiBhdChpbmRleCkKIAogICAgIHJldHVybiAoayA+PSAwICYmIGsg
PCBsZW5ndGgpID8gYXJyYXlba10gOiBAdW5kZWZpbmVkOwogfQorCitmdW5jdGlvbiB0b1JldmVy
c2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisgICAgdmFyIGFy
cmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9SZXZlcnNlZCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0ZXAg
Mi4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICAvLyBT
dGVwIDMuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7CisKKyAg
ICAvLyBTdGVwIDQtNS4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7Cisg
ICAgICAgIHZhciBmcm9tVmFsdWUgPSBhcnJheVtsZW5ndGggLSBrIC0gMV07CisgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGZyb21WYWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9Tb3J0ZWQoY29tcGFyZWZuKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICBpZiAoY29tcGFyZWZuICE9PSBAdW5kZWZp
bmVkICYmICFAaXNDYWxsYWJsZShjb21wYXJlZm4pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFyYXRvciBhcmd1bWVu
dCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAyLgorICAg
IHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnRvU29ydGVkIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8g
U3RlcCAzLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsK
KworICAgIC8vIFN0ZXAgOC4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKQor
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBhcnJheVtrXSk7CisKKyAgICAvLyBT
dGVwIDYuCisgICAgQGFycmF5U29ydC5AY2FsbChyZXN1bHQsIGNvbXBhcmVmbik7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiB0b1NwbGljZWQoc3RhcnQsIGRlbGV0ZUNvdW50
IC8qLCAuLi5pdGVtcyAqLykKK3sKKyAgICAidXNlIHN0cmljdCIKKworICAgIC8vIFN0ZXAgMS4K
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS50b1NwbGlj
ZWQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAg
ICAvLyBTdGVwIDIuCisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwor
CisgICAgLy8gU3RlcCAzLgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5m
aW5pdHkoc3RhcnQpOworCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIC8vIFN0ZXAgNC02Lgor
ICAgIGlmIChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFy
dCA9IDA7CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0
YXJ0ID0gbGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0
IDogMDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0
LCBsZW5ndGgpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7Cisg
ICAgdmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCA4LTEwLgorICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7Cisg
ICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgYWN0dWFsRGVsZXRl
Q291bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW5zZXJ0
Q291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgICAgICAgdmFyIHRlbXBEZWxldGVDb3Vu
dCA9IEB0b0ludGVnZXJPckluZmluaXR5KGRlbGV0ZUNvdW50KTsKKyAgICAgICAgdGVtcERlbGV0
ZUNvdW50ID0gdGVtcERlbGV0ZUNvdW50ID4gMCA/IHRlbXBEZWxldGVDb3VudCA6IDA7CisgICAg
ICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gQG1pbih0ZW1wRGVsZXRlQ291bnQsIGxlbmd0aCAtIGFj
dHVhbFN0YXJ0KTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDExLgorICAgIHZhciBuZXdMZW4gPSBs
ZW5ndGggKyBpbnNlcnRDb3VudCAtIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCAx
Mi4KKyAgICBpZiAobmV3TGVuID49IEBNQVhfU0FGRV9JTlRFR0VSKQorICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIkFycmF5IGxlbmd0aCBleGNlZWRzIDIqKjUzIC0gMSIpOworCisgICAgLy8gU3Rl
cCAxMy4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUobmV3TGVuKTsKKworICAg
IC8vIFN0ZXAgMTQuCisgICAgdmFyIGsgPSAwOworCisgICAgLy8gU3RlcCAxNi4KKyAgICBmb3Ig
KDsgayA8IGFjdHVhbFN0YXJ0OyBrKyspCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGssIGFycmF5W2tdKTsKKworICAgIC8vIFN0ZXAgMTcuCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBpbnNlcnRDb3VudDsgaSsrLCBrKyspCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGssIGFyZ3VtZW50c1tpICsgMl0pOworCisgICAgLy8gU3RlcCAxOC4KKyAgICBmb3IgKDsgayA8
IG5ld0xlbjsgaysrKSB7CisgICAgICAgIHZhciBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50
IC0gaW5zZXJ0Q291bnQ7CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFycmF5
W2Zyb21dKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworCit9CisKK2Z1bmN0aW9uIHdp
dGgoaW5kZXgsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4K
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS53aXRoIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8g
U3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVsYXRpdmVJbmRleCA9IEB0b0ludGVnZXJPckluZmluaXR5
KGluZGV4KTsKKworICAgIC8vIFN0ZXAgNC01LgorICAgIHZhciBhY3R1YWxJbmRleDsKKyAgICBp
ZiAocmVsYXRpdmVJbmRleCA+PSAwKQorICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0aXZlSW5k
ZXg7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0aXZlSW5k
ZXg7CisKKyAgICAvLyBTdGVwIDYuCisgICAgaWYgKGFjdHVhbEluZGV4ID49IGxlbmd0aCB8fCBh
Y3R1YWxJbmRleCA8IDApCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4IG91
dCBvZiBSYW5nZSIpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJy
YXlXaXRoU2l6ZShsZW5ndGgpOworCisgICAgLy8gU3RlcCA4LTkKKyAgICBmb3IgKHZhciBrID0g
MDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIGlmIChrID09PSBhY3R1YWxJbmRleCkKKyAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlba10pOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggYTA1MjU3NDg3NmZhMTQ4YWM5ODNiYzQxNzFmNDE1
NWE3MGQzZjBkOS4uNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkx
LDYgKzE5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHNlbnRpbmVsU3RyaW5nKSBc
CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1
bmN0aW9uKSBcCisgICAgbWFjcm8oYXJyYXlTb3J0KSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQ
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcwppbmRleCA2ZDQ0ZWI2YzE0MWU1MDgyZGQ1MmFlZTM1ZGMyY2M2OWE3NzVjZTc0
Li45M2ZlZWU1MDQ2ZTYzMjNlZDUxMWYyOTI4ZThhYTVjZmRmZmZhMGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwpA
QCAtMjI2LDYgKzIyNiw3IEBAIGZ1bmN0aW9uIHR5cGVkQXJyYXlNZXJnZVNvcnQoYXJyYXksIHZh
bHVlQ291bnQsIGNvbXBhcmF0b3IpCiAgICAgfQogfQogCitAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rp
b24gc29ydChjb21wYXJhdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKQEAgLTQwNCwzICs0MDUs
MTUwIEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAgcmV0dXJuIChrID49IDAgJiYgayA8IGxl
bmd0aCkgPyB0aGlzW2tdIDogQHVuZGVmaW5lZDsKIH0KKworZnVuY3Rpb24gdG9SZXZlcnNlZCgp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAyLTMuCisgICAgdmFyIGxlbmd0
aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA0LgorICAgIHZhciBj
b25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAg
ICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDUt
Ni4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIHZhciBm
cm9tVmFsdWUgPSB0aGlzW2xlbmd0aCAtIGsgLSAxXTsKKyAgICAgICAgcmVzdWx0W2tdID0gZnJv
bVZhbHVlOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU29y
dGVkKGNvbXBhcmVmbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisg
ICAgaWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVmaW5lZCAmJiAhQGlzQ2FsbGFibGUoY29tcGFyZWZu
KSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS50b1NvcnRl
ZCByZXF1aXJlcyB0aGUgY29tcGFyZWZuIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24gb3IgdW5k
ZWZpbmVkIik7CisKKyAgICAvLyBTdGVwIDUuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5
TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA2LgorICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0
eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0g
bmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDExLgorICAgIGZvciAodmFy
IGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspCisgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisK
KyAgICAvLyBTdGVwIDkuCisgICAgQHNvcnQuQGNhbGwocmVzdWx0LCBjb21wYXJlZm4pOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9TcGxpY2VkKHN0YXJ0LCBkZWxldGVD
b3VudCAvKiwgLi4uaXRlbXMgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3Rl
cCAyLTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAg
Ly8gU3RlcCA0LgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5maW5pdHko
c3RhcnQpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIGlm
IChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFydCA9IDA7
CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0YXJ0ID0g
bGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0IDogMDsK
KyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0LCBsZW5n
dGgpOworCisgICAgLy8gU3RlcCA4LTExLgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7CisgICAg
dmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp
CisgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gMDsKKyAgICBlbHNlIGlmIChhcmd1bWVudHMu
bGVuZ3RoID09PSAxKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IGxlbmd0aCAtIGFjdHVh
bFN0YXJ0OworICAgIGVsc2UgeworICAgICAgICBpbnNlcnRDb3VudCA9IGFyZ3VtZW50cy5sZW5n
dGggLSAyOworICAgICAgICB2YXIgdGVtcERlbGV0ZUNvdW50ID0gQHRvSW50ZWdlck9ySW5maW5p
dHkoZGVsZXRlQ291bnQpOworICAgICAgICB0ZW1wRGVsZXRlQ291bnQgPSB0ZW1wRGVsZXRlQ291
bnQgPiAwID8gdGVtcERlbGV0ZUNvdW50IDogMDsKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQg
PSBAbWluKHRlbXBEZWxldGVDb3VudCwgbGVuZ3RoIC0gYWN0dWFsU3RhcnQpOworICAgIH0KKwor
ICAgIC8vIFN0ZXAgMTIuCisgICAgdmFyIG5ld0xlbiA9IGxlbmd0aCArIGluc2VydENvdW50IC0g
YWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICAvLyBTdGVwIDEzLgorICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVz
dWx0ID0gbmV3IGNvbnN0cnVjdG9yKG5ld0xlbik7CisKKyAgICAvLyBTdGVwIDE0LgorICAgIHZh
ciBrID0gMDsKKworICAgIC8vIFN0ZXAgMTYuCisgICAgZm9yICg7IGsgPCBhY3R1YWxTdGFydDsg
aysrKSB7CisgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisgICAgfQorCisgICAgLy8gU3Rl
cCAxNy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc2VydENvdW50OyBpKyspIHsKKyAgICAg
ICAgcmVzdWx0W2tdID0gYXJndW1lbnRzW2kgKyAyXTsKKyAgICAgICAgaysrOworICAgIH0KKwor
ICAgIC8vIFN0ZXAgMTguCisgICAgZm9yICg7IGsgPCBuZXdMZW47IGsrKykgeworICAgICAgICB2
YXIgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAtIGluc2VydENvdW50OworICAgICAgICBy
ZXN1bHRba10gPSB0aGlzW2Zyb21dOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2Z1bmN0aW9uIHdpdGgoaW5kZXgsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IC8vIFN0ZXAgMi0zLgorICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsK
KworICAgIC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVsYXRpdmVJbmRleCA9IEB0b0ludGVnZXJPcklu
ZmluaXR5KGluZGV4KTsKKyAgICB2YXIgYWN0dWFsSW5kZXg7CisKKyAgICAvLyBTdGVwIDUtNi4K
KyAgICBpZiAocmVsYXRpdmVJbmRleCA+PSAwKQorICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0
aXZlSW5kZXg7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0
aXZlSW5kZXg7CisKKyAgICAvLyBTdGVwIDcuCisgICAgaWYgKEBpc0RldGFjaGVkKHRoaXMpKQor
ICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS53aXRoIGNhbGxl
ZCBvbiBhbiBkZXRhY2hlZCBhcnJheSIpOworICAgIGlmIChhY3R1YWxJbmRleCA8IDAgfHwgYWN0
dWFsSW5kZXggPj0gbGVuZ3RoKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJBcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UiKQorCisgICAgLy8gU3RlcCA4LgorICAgIHZhciBjb25zdHJ1Y3RvciA9
IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0
ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDktMTAuCisgICAgZm9y
ICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgeworICAgICAgICBpZiAoayA9PSBhY3R1YWxJ
bmRleCkKKyAgICAgICAgICAgIHJlc3VsdFtrXSA9IHZhbHVlOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXN1bHRba10gPSB0aGlzW2tdOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaAppbmRleCBkZjk5NDJmMjEyNTNiMDgyNmQzYTdkOTAwNDg4ZjZkY2JkZDI3OWQ2Li4xYzQ3
ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTExOSw2ICsxMTks
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KHNlbnRpbmVsU3RyaW5nLCBudWxscHRy
KSBcCiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1v
dGVGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCiAKIAog
I2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4
IDljYjA3MDAxNDcxOWJiYTRiZGI5NGJjYmE5ZTVlYWI5YmZjYzBkNmEuLjZhNTFmZGNmNTFiZjRl
Y2NmYzUxMzBjMmJmNDhlZjY3MTMxN2EwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdm9pZCBB
cnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVBdENvZGVHZW5lcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
LQorICAgIGlmIChPcHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSkgeworICAg
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudG9SZXZlcnNlZFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5
cGVUb1JldmVyc2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudG9Tb3J0ZWRQ
dWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlVG9Tb3J0ZWRDb2RlR2VuZXJhdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlVG9TcGxp
Y2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkud2l0aFB1YmxpY05hbWUoKSwg
YXJyYXlQcm90b3R5cGVXaXRoQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1By
aXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1Ymxp
Y05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKQEAgLTE0NSw2ICsxNTAs
OSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6OnVzZUFycmF5R3JvdXBCeU1l
dGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlUb01hcFB1
YmxpY05hbWUoKSA6IG51bGxwdHIsCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksCisgICAgICAgIE9wdGlvbnM6OnVzZUNo
YW5nZUFycmF5QnlDb3B5TWV0aG9kcygpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnRvUmV2ZXJzZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBPcHRpb25zOjp1
c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50b1NvcnRlZFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCisgICAgICAgIE9wdGlvbnM6
OnVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcygpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnRvU3BsaWNlZFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCiAgICAgICAgICZ2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkKICAgICB9Owog
ICAgIGZvciAoY29uc3QgYXV0byogdW5zY29wYWJsZU5hbWUgOiB1bnNjb3BhYmxlTmFtZXMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBlNjIxNjRiOWM5Mjg3YzU1Y2M3ZDllZmUyYjM4MTY1ODgwYWIwZTNkLi4yNzMxZmY1OWJm
MTc4ZjkyMmQ5NGJmMjIxNWRmNTRiMzg0MWU2ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04MDksNiArODA5LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAxLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBudW1iZXJQ
cm90b0Z1bmNUb1N0cmluZywgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMpKTsKICAg
ICAgICAgfSk7CiAKKyAgICBtX3R5cGVkQXJyYXlQcm90b1NvcnQuaW5pdExhdGVyKAorICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCB0eXBlZEFycmF5UHJvdG90eXBl
U29ydENvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CisK
ICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAKICAgICBtX251bGxHZXR0ZXJGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIE51bGxHZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBOdWxsR2V0dGVy
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSkpKTsKQEAgLTEzNDQsNiArMTM0OSwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBo
YXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSk7CiAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rp
b24pXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaGFzT3duUHJvcGVydHlGdW5j
dGlvbikpOwogICAgIH0KKyAgICB7CisgICAgICAgIEpTVmFsdWUgYXJyYXlTb3J0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihhcnJheVByb3RvdHlwZSgpLT5nZXQodGhpcywgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuc29ydFB1YmxpY05hbWUoKSkpOworICAgICAgICBjYXRjaFNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhanNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odm0sIGFycmF5U29ydCkpOworICAgICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcnJheVNvcnQp
XS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYXJyYXlTb3J0KSk7CisgICAgfQog
CiAjZGVmaW5lIElOSVRfUFJJVkFURV9HTE9CQUwoZnVuY05hbWUsIGNvZGUpIFwKICAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpm
dW5jTmFtZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eyBcCkBAIC0yMjI3LDYgKzIyMzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwogICAgIHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlzaXRvcik7Cisg
ICAgdGhpc09iamVjdC0+bV90eXBlZEFycmF5UHJvdG9Tb3J0LnZpc2l0KHZpc2l0b3IpOwogCiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZmJlMmEyMWRj
MDc1OTE2NmRkNWMwZTMwM2RkNjhjZWNhODllMDVkOC4uMGRmYzc2MDNhODQ0YWQzYjI1NmIwOTVl
OGUwZTQ2YWU3Y2YxZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0zNTYsNiArMzU2LDcgQEAgcHVibGljOgogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rp
b247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21p
c2VSZXNvbHZlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbjsKKyAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fdHlwZWRBcnJheVByb3RvU29ydDsKICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1i
b2xGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9TeW1i
b2xSZXBsYWNlOwpAQCAtNzI1LDYgKzcyNiw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBu
dW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3Rv
VG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQo
KTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Q7Cisg
ICAgSlNGdW5jdGlvbiogdHlwZWRBcnJheVByb3RvU29ydCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZWRBcnJheVByb3RvU29ydC5nZXQodGhpcyk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9T
eW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9s
UmVwbGFjZS5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0
ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCAwMTE1YzBjNjlhMTgzMzExYmQ0YjQ3
NTBjM2QxNGIyZjVjNzY2OTY4Li5jZWFmMmY5ZDkyNjkwMmIzNDc4Y2IzMjhmZTVhMWNmNzQwMDUy
YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtNDQxLDYgKzQ0MSw3IEBAIHZvaWQgSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
ZywgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNv
cnRQdWJsaWNOYW1lKCksIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVByb3RvU29ydCgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBK
U0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04oImJ1ZmZlciJfcywgdHlwZWRBcnJh
eVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
R0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlTGVuZ3RoLCB0
eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgVHlwZWRBcnJheUJ5dGVM
ZW5ndGhJbnRyaW5zaWMpOwpAQCAtNDQ4LDcgKzQ0OSw2IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvcHlXaXRo
aW4iX3MsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19CVUlMVElO
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZXZlcnkiX3MsIHR5cGVkQXJyYXlQcm90b3R5
cGVFdmVyeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oImZpbHRlciJfcywgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAg
ICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiX3MsIHR5cGVk
QXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVuY0VudHJpZXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBUeXBl
ZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04oImluY2x1ZGVzIl9zLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlsbFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNGaWxsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSk7CkBAIC00NzQsNiArNDc0LDEyIEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPnN1YmFycmF5LCB0eXBlZEFycmF5UHJvdG90eXBlU3ViYXJyYXlDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnRvTG9jYWxlU3RyaW5nLCB0eXBlZEFycmF5UHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkpIHsK
KyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b1JldmVy
c2VkIl9zLCB0eXBlZEFycmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b1NvcnRlZCJfcywgdHlw
ZWRBcnJheVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU3BsaWNlZCJfcywgdHlwZWRBcnJheVByb3Rv
dHlwZVRvU3BsaWNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKCJ3aXRoIl9zLCB0eXBlZEFycmF5UHJvdG90eXBlV2l0aENvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICB9CiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAgIEpTQ19C
VUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3RvdHlwZUF0Q29kZUdlbmVy
YXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA0
MGYwYzc5NjZjZjg3Y2MxYzdlNmJhYzY0MWE1NmZlMzZiZmUwMmE2Li4yYTAxMTkxY2UxOWM2YWNh
NmU3MTU5MmEzZThkMzM4MmIyZjExMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsNyBAQCBib29sIGNhblVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlQXJyYXlGaW5kTGFzdE1ldGhvZCwgdHJ1
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBmaW5kTGFzdCgpIGFuZCBmaW5kTGFzdEluZGV4KCkgbWV0
aG9kcyBvbiBBcnJheSBhbmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5
R3JvdXBCeU1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZ3JvdXBCeSgpIGFuZCBn
cm91cEJ5VG9NYXAoKSBtZXRob2RzIG9uIEFycmF5LiIpIFwKICAgICB2KEJvb2wsIHVzZUF0TWV0
aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5LCAlVHlw
ZWRBcnJheSUsIGFuZCBTdHJpbmcuIikgXAorICAgIHYoQm9vbCwgdXNlQ2hhbmdlQXJyYXlCeUNv
cHlNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSB3aXRoQXQoKSwgd2l0aFJldmVy
c2VkKCksIHdpdGhTb3J0ZWQoKSBhbmQgd2l0aFNwbGljZWQoKSBtZXRob2RzIG9uIEFycmF5IGFu
ZCAlVHlwZWRBcnJheSUuIikgXAogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW1w
b3J0QXNzZXJ0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRW5hYmxlIGltcG9ydCBhc3NlcnRpb24uIikg
XAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVlLCBOb3JtYWwsICJFeHBvc2Ug
dGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4YjhmZWRmZjdjNWZhMjZjODAxNjkzNmEw
NTYzOWE5NWRkMTg2YmQuLjJiOGQ1YTdjMmRmYWI5YmUwNmNhOTJhMjFlOGMxMzY5NGVlOGZlMDAg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMjItMDQtMDYgIEFkaXRpIFNpbmdoICA8YXNpbmdoQGlnYWxpYS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IENoYW5nZSBBcnJheSBieSBjb3B5IHByb3Bvc2FsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9j
aGFuZ2UtYXJyYXktYnktY29weS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaGFsbG93RXF1YWwpOgorICAgICAgICAoc2hv
dWxkVGhyb3cuQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZC50b1JldmVyc2VkKToKKyAgICAgICAg
KiBzdHJlc3MvdHlwZWQtYXJyYXktY2hhbmdlLWJ5LWNvcHkuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hhbGxvd0VxdWFs
KToKKyAgICAgICAgKHNlcXVlbmNlLm5ldy5VaW50OEFycmF5KToKKyAgICAgICAgKiBzdHJlc3Mv
dW5zY29wYWJsZXMuanM6CisKIDIwMjItMDQtMDEgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxh
bmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2tpcCBmbGFreSB0ZXN0IG9uIG1pcHMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzIGIvSlNUZXN0
cy9zdHJlc3MvY2hhbmdlLWFycmF5LWJ5LWNvcHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM1Y2EyMmM2ODU0
MzM0ZDZkZDE3OGY4NmIyOWU0ZjE0NzkxNmMwZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCkBAIC0wLDAgKzEsMTE3IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzPTEiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKCFzaGFsbG93RXF1YWwoYWN0
dWFsLCBleHBlY3RlZCkpeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhw
ZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBl
OworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBp
ZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAg
ICAgICBpZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21l
c3NhZ2V9IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3Rl
ZCAke1N0cmluZyhlcnJvcil9IGJ1dCBnb3QgJHttZXNzYWdlfWApOworICAgICAgICB9CisgICAg
fQorfQorCitmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAh
PT0gYi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2YXIgc2Vx
dWVuY2UgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdOworCisvLyBBcnJheS5wcm90
b3R5cGUudG9SZXZlcnNlZCgpCit7CisgICAgbGV0IHJldmVyc2VkU2VxdWVuY2UgPSBzZXF1ZW5j
ZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJzZWRTZXF1ZW5jZSwgWzEwLCA5LCA4
LCA3LCA2LCA1LCA0LCAzLCAyLCAxXSk7CisKKyAgICAvLyB8dGhpc3wgPSBudWxsLgorICAgIHNo
b3VsZFRocm93KCgpID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9SZXZlcnNlZChudWxs
LCAwLCA1KSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXkucHJvdG90eXBlLnRvU29ydGVkKCkK
K3sKKyAgICB2YXIgdW5zb3J0ZWRTZXF1ZW5jZSA9IFs5LCAyLCAzLCA0LCA1NiwgMTIsIDBdOwor
ICAgIHZhciBzb3J0ZWRTZXF1ZW5jZSA9IHVuc29ydGVkU2VxdWVuY2UudG9Tb3J0ZWQoKTsKKyAg
ICBzaG91bGRCZShzb3J0ZWRTZXF1ZW5jZSwgWzAsIDEyLCAyLCAzLCA0LCA1NiwgOV0pOworCisg
ICAgLy8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5
cGUudG9Tb3J0ZWQuY2FsbChudWxsKSwgVHlwZUVycm9yKTsKKworICAgIC8vIE5vbiBjYWxsYWJs
ZSBjb21wYXJhdG9yLgorICAgIHZhciBub25DYWxsYWJsZUNvbXBhcmF0b3IgPSAiYSI7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4gdW5zb3J0ZWRTZXF1ZW5jZS50b1NvcnRlZChub25DYWxsYWJsZUNv
bXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisvLyBBcnJheS5wcm90b3R5cGUudG9TcGxpY2Vk
KCkKK3sKKyAgICB2YXIgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUp
OworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDksIDEwXSk7CisKKyAg
ICAvLyBTdGFydCBtaXNzaW5nLgorICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVlbmNlLnRvU3Bs
aWNlZCgpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVuY2UpOworCisgICAg
Ly8gRGVsZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2Uu
dG9TcGxpY2VkKDMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDNdKTsK
KworICAgIC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkU2VxdWVuY2UgPSBzZXF1ZW5j
ZS50b1NwbGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVuY2UsIFtd
KTsKKworICAgIC8vIERlbGV0ZSBjb3VudCB1bmRlZmluZWQuCisgICAgc3BsaWNlZFNlcXVlbmNl
ID0gc2VxdWVuY2UudG9TcGxpY2VkKDEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoc3BsaWNl
ZFNlcXVlbmNlLCBzZXF1ZW5jZSk7CisKKyAgICAvLyBJbnNlcnRpb24KKyAgICBzcGxpY2VkU2Vx
dWVuY2UgPSBzZXF1ZW5jZS50b1NwbGljZWQoMywgNSwgMTEsIDEyLCAxMyk7CisgICAgc2hvdWxk
QmUoc3BsaWNlZFNlcXVlbmNlLCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKKworICAg
IC8vIHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBl
LnRvU3BsaWNlZC5jYWxsKG51bGwsIDAsIDUpLCBUeXBlRXJyb3IpOworCisgICAgLy8gTGVuZ3Ro
ID49IDJeNTMgLSAxLgorICAgIHZhciBhcnJheUxpa2UgPSB7fTsKKyAgICBhcnJheUxpa2UubGVu
Z3RoID0gMiAqKiA1MyAtIDE7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJvdG90eXBl
LnRvU3BsaWNlZC5jYWxsKGFycmF5TGlrZSwgMCwgMCwgbnVsbCksIFR5cGVFcnJvcik7Cit9CisK
Ky8vQXJyYXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZhciB3aXRoU2VxdWVuY2UgPSBzZXF1
ZW5jZS53aXRoKDMsICJhIik7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBbMSwgMiwgMywg
ImEiLCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggbWlzc2luZy4KKyAgICB3
aXRoU2VxdWVuY2UgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNl
LCBbdW5kZWZpbmVkLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5k
ZXggdW5kZWZpbmVkLgorICAgIHdpdGhTZXF1ZW5jZSA9IHNlcXVlbmNlLndpdGgodW5kZWZpbmVk
LCAiYSIpOworICAgIHNob3VsZEJlKHdpdGhTZXF1ZW5jZSwgWyJhIiwgMiwgMywgNCwgNSwgNiwg
NywgOCwgOSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisgICAgc2hvdWxkVGhyb3co
KCkgPT4gc2VxdWVuY2Uud2l0aCgtMTEsICJhIiksIFJhbmdlRXJyb3IpOworCisgICAgLy8gfHRo
aXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUudG9SZXZl
cnNlZC53aXRoKG51bGwsIDUsICJhIiksIFR5cGVFcnJvcik7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MzEyZmEzMjUxODdi
ZGQ2YTM3NzRlZDg3Y2FhM2I5NDYyZDZmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpAQCAtMCwwICsxLDEwNyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKKworZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmICghc2hhbGxvd0VxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30KKworZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7Cisg
ICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAg
ICAgICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2gg
JHttZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhw
ZWN0ZWQgJHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1gKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5n
dGggIT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFy
IHNlcXVlbmNlID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
XSk7CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQoreworICAgIHZhciBy
ZXZlcnNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUo
cmV2ZXJzZWRUeXBlZEFycmF5LCBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdKTsKK30K
KworLy8gVHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQoKQoreworICAgIHZhciB1bnNvcnRl
ZFR5cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheShbOSwgMiwgMywgNCwgNTYsIDEyLCAwXSk7Cisg
ICAgbGV0IHNvcnRlZFR5cGVkQXJyYXkgPSB1bnNvcnRlZFR5cGVkQXJyYXkudG9Tb3J0ZWQoKTsK
KyAgICBzaG91bGRCZShzb3J0ZWRUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwgOSwgMTIsIDU2XSk7
CisKKyAgICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIgbm9uQ2FsbGFibGVD
b21wYXJhdG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29ydGVkVHlwZWRBcnJh
eS50b1NvcnRlZChub25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisKKy8v
IFR5cGVkQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFyIHNwbGljZWRUeXBl
ZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAgIHNob3VsZEJlKHNwbGljZWRU
eXBlZEFycmF5LCBbMSwgMiwgMywgOSwgMTBdKTsKKworICAgIC8vIFN0YXJ0IG1pc3NpbmcKKyAg
ICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgpOworICAgIHNob3VsZEJl
KHNwbGljZWRUeXBlZEFycmF5LCBzZXF1ZW5jZSk7CisKKyAgICAvLyBEZWxldGUgY291bnQgbWlz
c2luZy4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgzKTsKKyAg
ICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDNdKTsKKworICAgIC8vIFN0YXJ0
IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCh1
bmRlZmluZWQpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbXSk7CisKKyAgICAv
LyBEZWxldGUgY291bnQgdW5kZWZpbmVkCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5j
ZS50b1NwbGljZWQoMywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJh
eSwgc2VxdWVuY2UpOworCisgICAgLy8gSW5zZXJ0aW9uLgorICAgIHNwbGljZWRUeXBlZEFycmF5
ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAxMiwgMTMpOworICAgIHNob3VsZEJlKHNw
bGljZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKK30KKworLy8g
VHlwZWRBcnJheS5wcm90b3R5cGUud2l0aCgpCit7CisgICAgdmFyIHdpdGhUeXBlZEFycmF5ID0g
c2VxdWVuY2Uud2l0aCgzLCAwKTsKKyAgICBzaG91bGRCZSh3aXRoVHlwZWRBcnJheSwgWzEsIDIs
IDMsIDAsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbmRleCBtaXNzaW5nCisgICAg
d2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVk
QXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXgg
dW5kZWZpbmVkCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKHVuZGVmaW5lZCwg
MCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5LCAxMF0pOworCisgICAgLy8gSW52YWxpZCBpbmRleC4KKyAgICBzaG91bGRUaHJvdygoKSA9
PiBzZXF1ZW5jZS53aXRoKC0xMSwgMCksIFJhbmdlRXJyb3IpOworCisgICAgLy8gRGV0YWNoZWQg
YnVmZmVyLgorICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoc2VxdWVuY2UuYnVmZmVyKTsKKyAgICBz
aG91bGRUaHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKDAsIDApLCBUeXBlRXJyb3IpOworfQorCisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdW5zY29wYWJsZXMuanMKaW5kZXggODg0OTBkYmZlNGNhYWY4NzgyNzk3NzBmNjY1N2MzZDEz
YTkzMzU2NC4uNGRkZDg1ZDU5MmQwZmJiMmE2NjRkZDA4ODY2YjIxNGJlZGVhMzgyZiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
dW5zY29wYWJsZXMuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
QXRNZXRob2Q9MSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRob2Q9MSAtLXVzZUNo
YW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKIAogZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVj
dGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkBAIC0xMSw3ICsxMSw3IEBAIGZ1
bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogCiAgICAgdGVzdCh0eXBlb2YgdW5zY29w
YWJsZXMsICJvYmplY3QiKTsKICAgICB0ZXN0KHVuc2NvcGFibGVzLl9fcHJvdG9fXywgdW5kZWZp
bmVkKTsKLSAgICB0ZXN0KFN0cmluZyhPYmplY3Qua2V5cyh1bnNjb3BhYmxlcykuc29ydCgpKSwg
ImF0LGNvcHlXaXRoaW4sZW50cmllcyxmaWxsLGZpbmQsZmluZEluZGV4LGZpbmRMYXN0LGZpbmRM
YXN0SW5kZXgsZmxhdCxmbGF0TWFwLGluY2x1ZGVzLGtleXMsdmFsdWVzIik7CisgICAgdGVzdChT
dHJpbmcoT2JqZWN0LmtleXModW5zY29wYWJsZXMpLnNvcnQoKSksICJhdCxjb3B5V2l0aGluLGVu
dHJpZXMsZmlsbCxmaW5kLGZpbmRJbmRleCxmaW5kTGFzdCxmaW5kTGFzdEluZGV4LGZsYXQsZmxh
dE1hcCxpbmNsdWRlcyxrZXlzLHRvUmV2ZXJzZWQsdG9Tb3J0ZWQsdG9TcGxpY2VkLHZhbHVlcyIp
OwogfSgpKTsKIAogKGZ1bmN0aW9uICgpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457159</attachid>
            <date>2022-04-09 02:31:02 -0700</date>
            <delta_ts>2022-04-12 02:31:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220409150100.patch</filename>
            <type>text/plain</type>
            <size>32243</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDcwZTAwYWRkMThiNWY2NTI3NzFkZGE5OThlNDlmYzFkMzZmM2ZhLi41ZDNkNDM0MTBiOGNmMmZi
YThlODA2MjMzODkzNWI2MjY2YmMxMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMi0wNC0wNiAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBTaHZheWthLgorICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgcHJvcG9zYWwgQ2hhbmdlIEFycmF5IEJ5IENvcHkuIFRoZSBwcm9wb3NhbCBwcm92aWRl
cyBhZGRpdGlvbmFsIAorICAgICAgICBtZXRob2RzIG9uIEFycmF5LnByb3RvdHlwZSBhbmQgVHlw
ZWRBcnJheS5wcm90b3R5cGUgdG8gZW5hYmxlIGNoYW5nZXMgb24gdGhlIGFycmF5IGJ5IAorICAg
ICAgICByZXR1cm5pbmcgYSBuZXcgY29weSBvZiBpdCB3aXRoIHRoZSBjaGFuZ2UuCisgICAgICAg
IFNpbmNlLCBhIGNhbGwgdG8gaW50cmluc2ljIGZ1bmN0aW9uczogQXJyYXkucHJvdG90eXBlLnNv
cnQoY29tcGFyZWZuKSBhbmQgCisgICAgICAgICVUeXBlZEFycmF5JS5wcm90b3R5cGUuc29ydChj
b21wYXJlZm4pIHdhcyBuZWVkZWQsIExpbmtUaW1lQ29uc3RhbnRzIGhhdmUKKyAgICAgICAgYmVl
biBhZGRlZCBmb3IgdGhlIHNhbWUuCisgICAgICAgIFRoZSBwcm9wb3NhbCBkZXRhaWxzIGNhbiBi
ZSBmb3VuZCBoZXJlOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1j
aGFuZ2UtYXJyYXktYnktY29weQorCisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUu
anM6CisgICAgICAgICh0b1JldmVyc2VkKToKKyAgICAgICAgKHRvU29ydGVkKToKKyAgICAgICAg
KHRvU3BsaWNlZCk6CisgICAgICAgICh3aXRoKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAg
ICAgICAodG9SZXZlcnNlZCk6CisgICAgICAgICh0b1NvcnRlZCk6CisgICAgICAgICh0b1NwbGlj
ZWQpOgorICAgICAgICAod2l0aCk6CisgICAgICAgIChzb3J0KToKKyAgICAgICAgKiBieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp0eXBlZEFycmF5UHJvdG9Tb3J0IGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIyLTA0LTA2ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzIG1vZGUgdG8g
dW5ib3hEb3VibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcwppbmRleCAzMzA3YTZkYzJkNGJiY2FjNDBiMDY3ZTZlZWQ4MGVlNWIyY2U3YzA4
Li5kMWU3YzA3OTJhYWU4NTBkNzhlMDliY2JhNzk5NjZhMmMxOWFlMGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC03OTUsMyAr
Nzk1LDE1OSBAQCBmdW5jdGlvbiBhdChpbmRleCkKIAogICAgIHJldHVybiAoayA+PSAwICYmIGsg
PCBsZW5ndGgpID8gYXJyYXlba10gOiBAdW5kZWZpbmVkOwogfQorCitmdW5jdGlvbiB0b1JldmVy
c2VkKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisgICAgdmFyIGFy
cmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9SZXZlcnNlZCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0ZXAg
Mi4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICAvLyBT
dGVwIDMuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7CisKKyAg
ICAvLyBTdGVwIDQtNS4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7Cisg
ICAgICAgIHZhciBmcm9tVmFsdWUgPSBhcnJheVtsZW5ndGggLSBrIC0gMV07CisgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGZyb21WYWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9Tb3J0ZWQoY29tcGFyZWZuKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4KKyAgICBpZiAoY29tcGFyZWZuICE9PSBAdW5kZWZp
bmVkICYmICFAaXNDYWxsYWJsZShjb21wYXJlZm4pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS50b1NvcnRlZCByZXF1aXJlcyB0aGUgY29tcGFyYXRvciBhcmd1bWVu
dCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCAyLgorICAg
IHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnRvU29ydGVkIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8g
U3RlcCAzLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsK
KworICAgIC8vIFN0ZXAgOC4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKQor
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBhcnJheVtrXSk7CisKKyAgICAvLyBT
dGVwIDYuCisgICAgQGFycmF5U29ydC5AY2FsbChyZXN1bHQsIGNvbXBhcmVmbik7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiB0b1NwbGljZWQoc3RhcnQsIGRlbGV0ZUNvdW50
IC8qLCAuLi5pdGVtcyAqLykKK3sKKyAgICAidXNlIHN0cmljdCIKKworICAgIC8vIFN0ZXAgMS4K
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS50b1NwbGlj
ZWQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAg
ICAvLyBTdGVwIDIuCisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwor
CisgICAgLy8gU3RlcCAzLgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5m
aW5pdHkoc3RhcnQpOworCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIC8vIFN0ZXAgNC02Lgor
ICAgIGlmIChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFy
dCA9IDA7CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0
YXJ0ID0gbGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0
IDogMDsKKyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0
LCBsZW5ndGgpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7Cisg
ICAgdmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCA4LTEwLgorICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAwKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7Cisg
ICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgYWN0dWFsRGVsZXRl
Q291bnQgPSBsZW5ndGggLSBhY3R1YWxTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW5zZXJ0
Q291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgICAgICAgdmFyIHRlbXBEZWxldGVDb3Vu
dCA9IEB0b0ludGVnZXJPckluZmluaXR5KGRlbGV0ZUNvdW50KTsKKyAgICAgICAgdGVtcERlbGV0
ZUNvdW50ID0gdGVtcERlbGV0ZUNvdW50ID4gMCA/IHRlbXBEZWxldGVDb3VudCA6IDA7CisgICAg
ICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gQG1pbih0ZW1wRGVsZXRlQ291bnQsIGxlbmd0aCAtIGFj
dHVhbFN0YXJ0KTsKKyAgICB9CisKKyAgICAvLyBTdGVwIDExLgorICAgIHZhciBuZXdMZW4gPSBs
ZW5ndGggKyBpbnNlcnRDb3VudCAtIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCAx
Mi4KKyAgICBpZiAobmV3TGVuID49IEBNQVhfU0FGRV9JTlRFR0VSKQorICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIkFycmF5IGxlbmd0aCBleGNlZWRzIDIqKjUzIC0gMSIpOworCisgICAgLy8gU3Rl
cCAxMy4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUobmV3TGVuKTsKKworICAg
IC8vIFN0ZXAgMTQuCisgICAgdmFyIGsgPSAwOworCisgICAgLy8gU3RlcCAxNi4KKyAgICBmb3Ig
KDsgayA8IGFjdHVhbFN0YXJ0OyBrKyspCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGssIGFycmF5W2tdKTsKKworICAgIC8vIFN0ZXAgMTcuCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBpbnNlcnRDb3VudDsgaSsrLCBrKyspCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGssIGFyZ3VtZW50c1tpICsgMl0pOworCisgICAgLy8gU3RlcCAxOC4KKyAgICBmb3IgKDsgayA8
IG5ld0xlbjsgaysrKSB7CisgICAgICAgIHZhciBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50
IC0gaW5zZXJ0Q291bnQ7CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFycmF5
W2Zyb21dKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworCit9CisKK2Z1bmN0aW9uIHdp
dGgoaW5kZXgsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMS4K
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS53aXRoIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgLy8g
U3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVsYXRpdmVJbmRleCA9IEB0b0ludGVnZXJPckluZmluaXR5
KGluZGV4KTsKKworICAgIC8vIFN0ZXAgNC01LgorICAgIHZhciBhY3R1YWxJbmRleDsKKyAgICBp
ZiAocmVsYXRpdmVJbmRleCA+PSAwKQorICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0aXZlSW5k
ZXg7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0aXZlSW5k
ZXg7CisKKyAgICAvLyBTdGVwIDYuCisgICAgaWYgKGFjdHVhbEluZGV4ID49IGxlbmd0aCB8fCBh
Y3R1YWxJbmRleCA8IDApCisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkFycmF5IGluZGV4IG91
dCBvZiBSYW5nZSIpOworCisgICAgLy8gU3RlcCA3LgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJy
YXlXaXRoU2l6ZShsZW5ndGgpOworCisgICAgLy8gU3RlcCA4LTkKKyAgICBmb3IgKHZhciBrID0g
MDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIGlmIChrID09PSBhY3R1YWxJbmRleCkKKyAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlba10pOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggYTA1MjU3NDg3NmZhMTQ4YWM5ODNiYzQxNzFmNDE1
NWE3MGQzZjBkOS4uNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkx
LDYgKzE5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHNlbnRpbmVsU3RyaW5nKSBc
CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1
bmN0aW9uKSBcCisgICAgbWFjcm8oYXJyYXlTb3J0KSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQ
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcwppbmRleCA2ZDQ0ZWI2YzE0MWU1MDgyZGQ1MmFlZTM1ZGMyY2M2OWE3NzVjZTc0
Li45M2ZlZWU1MDQ2ZTYzMjNlZDUxMWYyOTI4ZThhYTVjZmRmZmZhMGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwpA
QCAtMjI2LDYgKzIyNiw3IEBAIGZ1bmN0aW9uIHR5cGVkQXJyYXlNZXJnZVNvcnQoYXJyYXksIHZh
bHVlQ291bnQsIGNvbXBhcmF0b3IpCiAgICAgfQogfQogCitAZ2xvYmFsUHJpdmF0ZQogZnVuY3Rp
b24gc29ydChjb21wYXJhdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKQEAgLTQwNCwzICs0MDUs
MTUwIEBAIGZ1bmN0aW9uIGF0KGluZGV4KQogCiAgICAgcmV0dXJuIChrID49IDAgJiYgayA8IGxl
bmd0aCkgPyB0aGlzW2tdIDogQHVuZGVmaW5lZDsKIH0KKworZnVuY3Rpb24gdG9SZXZlcnNlZCgp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAyLTMuCisgICAgdmFyIGxlbmd0
aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA0LgorICAgIHZhciBj
b25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAg
ICB2YXIgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDUt
Ni4KKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CisgICAgICAgIHZhciBm
cm9tVmFsdWUgPSB0aGlzW2xlbmd0aCAtIGsgLSAxXTsKKyAgICAgICAgcmVzdWx0W2tdID0gZnJv
bVZhbHVlOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU29y
dGVkKGNvbXBhcmVmbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisg
ICAgaWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVmaW5lZCAmJiAhQGlzQ2FsbGFibGUoY29tcGFyZWZu
KSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS50b1NvcnRl
ZCByZXF1aXJlcyB0aGUgY29tcGFyZWZuIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24gb3IgdW5k
ZWZpbmVkIik7CisKKyAgICAvLyBTdGVwIDUuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5
TGVuZ3RoKHRoaXMpOworCisgICAgLy8gU3RlcCA2LgorICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0
eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0ID0g
bmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDExLgorICAgIGZvciAodmFy
IGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspCisgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisK
KyAgICAvLyBTdGVwIDkuCisgICAgQHNvcnQuQGNhbGwocmVzdWx0LCBjb21wYXJlZm4pOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9TcGxpY2VkKHN0YXJ0LCBkZWxldGVD
b3VudCAvKiwgLi4uaXRlbXMgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3Rl
cCAyLTMuCisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOworCisgICAg
Ly8gU3RlcCA0LgorICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlck9ySW5maW5pdHko
c3RhcnQpOworCisgICAgLy8gU3RlcCA1LTcuCisgICAgdmFyIGFjdHVhbFN0YXJ0OworICAgIGlm
IChyZWxhdGl2ZVN0YXJ0ID09PSAtQEluZmluaXR5KQorICAgICAgICBhY3R1YWxTdGFydCA9IDA7
CisgICAgZWxzZSBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGFjdHVhbFN0YXJ0ID0g
bGVuZ3RoICsgcmVsYXRpdmVTdGFydCA+IDAgPyBsZW5ndGggKyByZWxhdGl2ZVN0YXJ0IDogMDsK
KyAgICBlbHNlCisgICAgICAgIGFjdHVhbFN0YXJ0ID0gQG1pbihyZWxhdGl2ZVN0YXJ0LCBsZW5n
dGgpOworCisgICAgLy8gU3RlcCA4LTExLgorICAgIHZhciBpbnNlcnRDb3VudCA9IDA7CisgICAg
dmFyIGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp
CisgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gMDsKKyAgICBlbHNlIGlmIChhcmd1bWVudHMu
bGVuZ3RoID09PSAxKQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IGxlbmd0aCAtIGFjdHVh
bFN0YXJ0OworICAgIGVsc2UgeworICAgICAgICBpbnNlcnRDb3VudCA9IGFyZ3VtZW50cy5sZW5n
dGggLSAyOworICAgICAgICB2YXIgdGVtcERlbGV0ZUNvdW50ID0gQHRvSW50ZWdlck9ySW5maW5p
dHkoZGVsZXRlQ291bnQpOworICAgICAgICB0ZW1wRGVsZXRlQ291bnQgPSB0ZW1wRGVsZXRlQ291
bnQgPiAwID8gdGVtcERlbGV0ZUNvdW50IDogMDsKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQg
PSBAbWluKHRlbXBEZWxldGVDb3VudCwgbGVuZ3RoIC0gYWN0dWFsU3RhcnQpOworICAgIH0KKwor
ICAgIC8vIFN0ZXAgMTIuCisgICAgdmFyIG5ld0xlbiA9IGxlbmd0aCArIGluc2VydENvdW50IC0g
YWN0dWFsRGVsZXRlQ291bnQ7CisKKyAgICAvLyBTdGVwIDEzLgorICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVz
dWx0ID0gbmV3IGNvbnN0cnVjdG9yKG5ld0xlbik7CisKKyAgICAvLyBTdGVwIDE0LgorICAgIHZh
ciBrID0gMDsKKworICAgIC8vIFN0ZXAgMTYuCisgICAgZm9yICg7IGsgPCBhY3R1YWxTdGFydDsg
aysrKSB7CisgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNba107CisgICAgfQorCisgICAgLy8gU3Rl
cCAxNy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc2VydENvdW50OyBpKyspIHsKKyAgICAg
ICAgcmVzdWx0W2tdID0gYXJndW1lbnRzW2kgKyAyXTsKKyAgICAgICAgaysrOworICAgIH0KKwor
ICAgIC8vIFN0ZXAgMTguCisgICAgZm9yICg7IGsgPCBuZXdMZW47IGsrKykgeworICAgICAgICB2
YXIgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAtIGluc2VydENvdW50OworICAgICAgICBy
ZXN1bHRba10gPSB0aGlzW2Zyb21dOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2Z1bmN0aW9uIHdpdGgoaW5kZXgsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IC8vIFN0ZXAgMi0zLgorICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsK
KworICAgIC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVsYXRpdmVJbmRleCA9IEB0b0ludGVnZXJPcklu
ZmluaXR5KGluZGV4KTsKKyAgICB2YXIgYWN0dWFsSW5kZXg7CisKKyAgICAvLyBTdGVwIDUtNi4K
KyAgICBpZiAocmVsYXRpdmVJbmRleCA+PSAwKQorICAgICAgICBhY3R1YWxJbmRleCA9IHJlbGF0
aXZlSW5kZXg7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxJbmRleCA9IGxlbmd0aCArIHJlbGF0
aXZlSW5kZXg7CisKKyAgICAvLyBTdGVwIDcuCisgICAgaWYgKEBpc0RldGFjaGVkKHRoaXMpKQor
ICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS53aXRoIGNhbGxl
ZCBvbiBhbiBkZXRhY2hlZCBhcnJheSIpOworICAgIGlmIChhY3R1YWxJbmRleCA8IDAgfHwgYWN0
dWFsSW5kZXggPj0gbGVuZ3RoKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJBcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UiKQorCisgICAgLy8gU3RlcCA4LgorICAgIHZhciBjb25zdHJ1Y3RvciA9
IEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlzKTsKKyAgICB2YXIgcmVzdWx0
ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisKKyAgICAvLyBTdGVwIDktMTAuCisgICAgZm9y
ICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgeworICAgICAgICBpZiAoayA9PSBhY3R1YWxJ
bmRleCkKKyAgICAgICAgICAgIHJlc3VsdFtrXSA9IHZhbHVlOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXN1bHRba10gPSB0aGlzW2tdOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaAppbmRleCBkZjk5NDJmMjEyNTNiMDgyNmQzYTdkOTAwNDg4ZjZkY2JkZDI3OWQ2Li4xYzQ3
ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTExOSw2ICsxMTks
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KHNlbnRpbmVsU3RyaW5nLCBudWxscHRy
KSBcCiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1v
dGVGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCiAKIAog
I2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4
IDljYjA3MDAxNDcxOWJiYTRiZGI5NGJjYmE5ZTVlYWI5YmZjYzBkNmEuLjQ1ZTRhNjhkM2ZmYWE3
Mjc1ZTVmYTI3MzVjMWNkZDM1OTE0YzQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdm9pZCBB
cnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVBdENvZGVHZW5lcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
LQorICAgIGlmIChPcHRpb25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSkgeworICAg
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudG9SZXZlcnNlZFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5
cGVUb1JldmVyc2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudG9Tb3J0ZWRQ
dWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlVG9Tb3J0ZWRDb2RlR2VuZXJhdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlVG9TcGxp
Y2VkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkud2l0aFB1YmxpY05hbWUoKSwg
YXJyYXlQcm90b3R5cGVXaXRoQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1By
aXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1Ymxp
Y05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKQEAgLTE0NSw2ICsxNTAs
MTAgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBPcHRpb25zOjp1c2VBcnJheUdyb3VwQnlN
ZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5VG9NYXBQ
dWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLAorICAgICAgICBPcHRpb25zOjp1c2VD
aGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS50b1JldmVyc2VkUHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0aW9uczo6
dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudG9Tb3J0ZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBPcHRpb25z
Ojp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBPcHRp
b25zOjp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS53aXRoUHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKQogICAgIH07CiAg
ICAgZm9yIChjb25zdCBhdXRvKiB1bnNjb3BhYmxlTmFtZSA6IHVuc2NvcGFibGVOYW1lcykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGU2MjE2NGI5YzkyODdjNTVjYzdkOWVmZTJiMzgxNjU4ODBhYjBlM2QuLmY0MTA5NDFjMmRl
Zjk5MTMxYjI1MDEzMzljNWJjYzJlYTYwOWUxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgwOSw2ICs4MDksMTEgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDEsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCksIG51bWJlclBy
b3RvRnVuY1RvU3RyaW5nLCBOdW1iZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYykpOwogICAg
ICAgICB9KTsKIAorICAgIG1fdHlwZWRBcnJheVByb3RvU29ydC5pbml0TGF0ZXIoCisgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIHR5cGVkQXJyYXlQcm90b3R5cGVT
b3J0Q29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5vd25lcikpOworICAgICAgICB9KTsKKwog
ICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKIAogICAgIG1fbnVsbEdldHRlckZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgTnVsbEdldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIE51bGxHZXR0ZXJG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSkpOwpAQCAtMTM0NCw2ICsxMzQ5LDEwIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGhh
c093blByb3BlcnR5RnVuY3Rpb24pKTsKICAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aGFzT3duUHJvcGVydHlGdW5jdGlv
bildLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihoYXNPd25Qcm9wZXJ0eUZ1bmN0
aW9uKSk7CiAgICAgfQorICAgIHsKKyAgICAgICAgSlNWYWx1ZSBhcnJheVNvcnQgPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGFycmF5UHJvdG90eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuc29ydFB1YmxpY05hbWUoKSkpOworICAgICAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcnJh
eVNvcnQpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYXJyYXlTb3J0KSk7Cisg
ICAgfQogCiAjZGVmaW5lIElOSVRfUFJJVkFURV9HTE9CQUwoZnVuY05hbWUsIGNvZGUpIFwKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpmdW5jTmFtZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeyBcCkBAIC0yMjI3LDYgKzIyMzYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwogICAgIHRo
aXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlzaXRv
cik7CisgICAgdGhpc09iamVjdC0+bV90eXBlZEFycmF5UHJvdG9Tb3J0LnZpc2l0KHZpc2l0b3Ip
OwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZmJl
MmEyMWRjMDc1OTE2NmRkNWMwZTMwM2RkNjhjZWNhODllMDVkOC4uMGRmYzc2MDNhODQ0YWQzYjI1
NmIwOTVlOGUwZTQ2YWU3Y2YxZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zNTYsNiArMzU2LDcgQEAgcHVibGljOgogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29s
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbjsKKyAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fdHlwZWRBcnJheVByb3RvU29ydDsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJv
dG9TeW1ib2xSZXBsYWNlOwpAQCAtNzI1LDYgKzcyNiw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0
aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJl
clByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsg
fQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29u
c3Q7CisgICAgSlNGdW5jdGlvbiogdHlwZWRBcnJheVByb3RvU29ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZWRBcnJheVByb3RvU29ydC5nZXQodGhpcyk7IH0KICAgICBKU09iamVjdCogcmVnRXhw
UHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3Rv
U3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9i
YWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdl
dHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCAwMTE1YzBjNjlhMTgzMzEx
YmQ0YjQ3NTBjM2QxNGIyZjVjNzY2OTY4Li5jZWFmMmY5ZDkyNjkwMmIzNDc4Y2IzMjhmZTVhMWNm
NzQwMDUyYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtNDQxLDYgKzQ0MSw3IEBAIHZv
aWQgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZywgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnNvcnRQdWJsaWNOYW1lKCksIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVByb3RvU29ydCgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04oImJ1ZmZlciJfcywgdHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX05BVElWRV9JTlRS
SU5TSUNfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlTGVu
Z3RoLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgVHlwZWRBcnJh
eUJ5dGVMZW5ndGhJbnRyaW5zaWMpOwpAQCAtNDQ4LDcgKzQ0OSw2IEBAIHZvaWQgSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNv
cHlXaXRoaW4iX3MsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19C
VUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZXZlcnkiX3MsIHR5cGVkQXJyYXlQ
cm90b3R5cGVFdmVyeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04oImZpbHRlciJfcywgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKLSAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiX3Ms
IHR5cGVkQXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVuY0VudHJp
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAw
LCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIl9zLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
Y2x1ZGVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlsbFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNGaWxsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMSk7CkBAIC00NzQsNiArNDc0LDEyIEBAIHZvaWQgSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPnN1YmFycmF5LCB0eXBlZEFycmF5UHJvdG90eXBlU3ViYXJyYXlDb2RlR2VuZXJh
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPnRvTG9jYWxlU3RyaW5nLCB0eXBlZEFycmF5UHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2Rz
KCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0
b1JldmVyc2VkIl9zLCB0eXBlZEFycmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b1NvcnRlZCJf
cywgdHlwZWRBcnJheVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU3BsaWNlZCJfcywgdHlwZWRBcnJh
eVByb3RvdHlwZVRvU3BsaWNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ3aXRoIl9zLCB0eXBlZEFycmF5UHJvdG90eXBlV2l0aENv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICB9CiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3RvdHlwZUF0Q29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCA0MGYwYzc5NjZjZjg3Y2MxYzdlNmJhYzY0MWE1NmZlMzZiZmUwMmE2Li4yYTAxMTkxY2Ux
OWM2YWNhNmU3MTU5MmEzZThkMzM4MmIyZjExMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsNyBAQCBib29sIGNhblVzZVdl
YkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlQXJyYXlGaW5kTGFzdE1ldGhv
ZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBmaW5kTGFzdCgpIGFuZCBmaW5kTGFzdEluZGV4
KCkgbWV0aG9kcyBvbiBBcnJheSBhbmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJvb2wsIHVz
ZUFycmF5R3JvdXBCeU1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZ3JvdXBCeSgp
IGFuZCBncm91cEJ5VG9NYXAoKSBtZXRob2RzIG9uIEFycmF5LiIpIFwKICAgICB2KEJvb2wsIHVz
ZUF0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5
LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikgXAorICAgIHYoQm9vbCwgdXNlQ2hhbmdlQXJy
YXlCeUNvcHlNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSB3aXRoQXQoKSwgd2l0
aFJldmVyc2VkKCksIHdpdGhTb3J0ZWQoKSBhbmQgd2l0aFNwbGljZWQoKSBtZXRob2RzIG9uIEFy
cmF5IGFuZCAlVHlwZWRBcnJheSUuIikgXAogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwg
dXNlSW1wb3J0QXNzZXJ0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRW5hYmxlIGltcG9ydCBhc3NlcnRp
b24uIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVlLCBOb3JtYWwsICJF
eHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4YjhmZWRmZjdjNWZhMjZjODAx
NjkzNmEwNTYzOWE5NWRkMTg2YmQuLjFlNmRkZTkxN2QxNTU1OWU1ZjAxYjJkYzczYTA0YTEwOGEy
MTIxYTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDQtMDYgIEFkaXRpIFNpbmdoICA8YXNpbmdoQGln
YWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENoYW5nZSBBcnJheSBieSBjb3B5IHByb3Bv
c2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgU2h2YXlrYS4KKworICAgICAgICAqIHN0
cmVzcy9jaGFuZ2UtYXJyYXktYnktY29weS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaGFsbG93RXF1YWwpOgorICAgICAg
ICAoc2hvdWxkVGhyb3cuQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZC50b1JldmVyc2VkKToKKyAg
ICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktY2hhbmdlLWJ5LWNvcHkuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hhbGxv
d0VxdWFsKToKKyAgICAgICAgKHNlcXVlbmNlLm5ldy5VaW50OEFycmF5KToKKyAgICAgICAgKiBz
dHJlc3MvdW5zY29wYWJsZXMuanM6CisKIDIwMjItMDQtMDEgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vs
b3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2tpcCBmbGFreSB0ZXN0IG9uIG1p
cHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvY2hhbmdlLWFycmF5LWJ5LWNvcHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM1Y2Ey
MmM2ODU0MzM0ZDZkZDE3OGY4NmIyOWU0ZjE0NzkxNmMwZQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCkBAIC0wLDAgKzEsMTE3IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzPTEiKQorCitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKCFzaGFsbG93RXF1
YWwoYWN0dWFsLCBleHBlY3RlZCkpeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVk
ICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAgfQorfQorCitmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsK
KyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7Cisg
ICAgICAgICAgICBpZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRj
aCAke21lc3NhZ2V9IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFN0cmlu
ZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBl
eHBlY3RlZCAke1N0cmluZyhlcnJvcil9IGJ1dCBnb3QgJHttZXNzYWdlfWApOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikgeworICAgIGlmIChhLmxl
bmd0aCAhPT0gYi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2
YXIgc2VxdWVuY2UgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdOworCisvLyBBcnJh
eS5wcm90b3R5cGUudG9SZXZlcnNlZCgpCit7CisgICAgbGV0IHJldmVyc2VkU2VxdWVuY2UgPSBz
ZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJzZWRTZXF1ZW5jZSwgWzEw
LCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxXSk7CisKKyAgICAvLyB8dGhpc3wgPSBudWxsLgor
ICAgIHNob3VsZFRocm93KCgpID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9SZXZlcnNl
ZChudWxsLCAwLCA1KSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXkucHJvdG90eXBlLnRvU29y
dGVkKCkKK3sKKyAgICB2YXIgdW5zb3J0ZWRTZXF1ZW5jZSA9IFs5LCAyLCAzLCA0LCA1NiwgMTIs
IDBdOworICAgIHZhciBzb3J0ZWRTZXF1ZW5jZSA9IHVuc29ydGVkU2VxdWVuY2UudG9Tb3J0ZWQo
KTsKKyAgICBzaG91bGRCZShzb3J0ZWRTZXF1ZW5jZSwgWzAsIDEyLCAyLCAzLCA0LCA1NiwgOV0p
OworCisgICAgLy8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5w
cm90b3R5cGUudG9Tb3J0ZWQuY2FsbChudWxsKSwgVHlwZUVycm9yKTsKKworICAgIC8vIE5vbiBj
YWxsYWJsZSBjb21wYXJhdG9yLgorICAgIHZhciBub25DYWxsYWJsZUNvbXBhcmF0b3IgPSAiYSI7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gdW5zb3J0ZWRTZXF1ZW5jZS50b1NvcnRlZChub25DYWxs
YWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisvLyBBcnJheS5wcm90b3R5cGUudG9T
cGxpY2VkKCkKK3sKKyAgICB2YXIgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2Vk
KDMsIDUpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDksIDEwXSk7
CisKKyAgICAvLyBTdGFydCBtaXNzaW5nLgorICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNlcXVlbmNl
LnRvU3BsaWNlZCgpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVuY2UpOwor
CisgICAgLy8gRGVsZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFNlcXVlbmNlID0gc2Vx
dWVuY2UudG9TcGxpY2VkKDMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIs
IDNdKTsKKworICAgIC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkU2VxdWVuY2UgPSBz
ZXF1ZW5jZS50b1NwbGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkU2VxdWVu
Y2UsIFtdKTsKKworICAgIC8vIERlbGV0ZSBjb3VudCB1bmRlZmluZWQuCisgICAgc3BsaWNlZFNl
cXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
c3BsaWNlZFNlcXVlbmNlLCBzZXF1ZW5jZSk7CisKKyAgICAvLyBJbnNlcnRpb24KKyAgICBzcGxp
Y2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50b1NwbGljZWQoMywgNSwgMTEsIDEyLCAxMyk7CisgICAg
c2hvdWxkQmUoc3BsaWNlZFNlcXVlbmNlLCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsK
KworICAgIC8vIHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJv
dG90eXBlLnRvU3BsaWNlZC5jYWxsKG51bGwsIDAsIDUpLCBUeXBlRXJyb3IpOworCisgICAgLy8g
TGVuZ3RoID49IDJeNTMgLSAxLgorICAgIHZhciBhcnJheUxpa2UgPSB7fTsKKyAgICBhcnJheUxp
a2UubGVuZ3RoID0gMiAqKiA1MyAtIDE7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJyYXkucHJv
dG90eXBlLnRvU3BsaWNlZC5jYWxsKGFycmF5TGlrZSwgMCwgMCwgbnVsbCksIFR5cGVFcnJvcik7
Cit9CisKKy8vQXJyYXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZhciB3aXRoU2VxdWVuY2Ug
PSBzZXF1ZW5jZS53aXRoKDMsICJhIik7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNlLCBbMSwg
MiwgMywgImEiLCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggbWlzc2luZy4K
KyAgICB3aXRoU2VxdWVuY2UgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0aFNl
cXVlbmNlLCBbdW5kZWZpbmVkLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAg
Ly8gSW5kZXggdW5kZWZpbmVkLgorICAgIHdpdGhTZXF1ZW5jZSA9IHNlcXVlbmNlLndpdGgodW5k
ZWZpbmVkLCAiYSIpOworICAgIHNob3VsZEJlKHdpdGhTZXF1ZW5jZSwgWyJhIiwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisgICAgc2hvdWxk
VGhyb3coKCkgPT4gc2VxdWVuY2Uud2l0aCgtMTEsICJhIiksIFJhbmdlRXJyb3IpOworCisgICAg
Ly8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90b3R5cGUu
dG9SZXZlcnNlZC53aXRoKG51bGwsIDUsICJhIiksIFR5cGVFcnJvcik7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3R5cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MzEyZmEz
MjUxODdiZGQ2YTM3NzRlZDg3Y2FhM2I5NDYyZDZmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpAQCAtMCwwICsxLDEwNyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikK
KworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmICghc2hhbGxv
d0VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9y
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlw
ZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0h
YCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykg
eworICAgICAgICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8g
bWF0Y2ggJHttZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChT
dHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgZXhwZWN0ZWQgJHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1gKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsKKyAgICBpZiAo
YS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ld
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordmFyIHNlcXVlbmNlID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDksIDEwXSk7CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQoreworICAg
IHZhciByZXZlcnNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hv
dWxkQmUocmV2ZXJzZWRUeXBlZEFycmF5LCBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFd
KTsKK30KKworLy8gVHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQoKQoreworICAgIHZhciB1
bnNvcnRlZFR5cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheShbOSwgMiwgMywgNCwgNTYsIDEyLCAw
XSk7CisgICAgbGV0IHNvcnRlZFR5cGVkQXJyYXkgPSB1bnNvcnRlZFR5cGVkQXJyYXkudG9Tb3J0
ZWQoKTsKKyAgICBzaG91bGRCZShzb3J0ZWRUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwgOSwgMTIs
IDU2XSk7CisKKyAgICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIgbm9uQ2Fs
bGFibGVDb21wYXJhdG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29ydGVkVHlw
ZWRBcnJheS50b1NvcnRlZChub25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQor
CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFyIHNwbGlj
ZWRUeXBlZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAgIHNob3VsZEJlKHNw
bGljZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgOSwgMTBdKTsKKworICAgIC8vIFN0YXJ0IG1pc3Np
bmcKKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgpOworICAgIHNo
b3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBzZXF1ZW5jZSk7CisKKyAgICAvLyBEZWxldGUgY291
bnQgbWlzc2luZy4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgz
KTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDNdKTsKKworICAgIC8v
IFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3Bs
aWNlZCh1bmRlZmluZWQpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbXSk7CisK
KyAgICAvLyBEZWxldGUgY291bnQgdW5kZWZpbmVkCisgICAgc3BsaWNlZFR5cGVkQXJyYXkgPSBz
ZXF1ZW5jZS50b1NwbGljZWQoMywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlw
ZWRBcnJheSwgc2VxdWVuY2UpOworCisgICAgLy8gSW5zZXJ0aW9uLgorICAgIHNwbGljZWRUeXBl
ZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAxMiwgMTMpOworICAgIHNob3Vs
ZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBdKTsKK30K
KworLy8gVHlwZWRBcnJheS5wcm90b3R5cGUud2l0aCgpCit7CisgICAgdmFyIHdpdGhUeXBlZEFy
cmF5ID0gc2VxdWVuY2Uud2l0aCgzLCAwKTsKKyAgICBzaG91bGRCZSh3aXRoVHlwZWRBcnJheSwg
WzEsIDIsIDMsIDAsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbmRleCBtaXNzaW5n
CisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUod2l0
aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8g
SW5kZXggdW5kZWZpbmVkCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKHVuZGVm
aW5lZCwgMCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW52YWxpZCBpbmRleC4KKyAgICBzaG91bGRUaHJv
dygoKSA9PiBzZXF1ZW5jZS53aXRoKC0xMSwgMCksIFJhbmdlRXJyb3IpOworCisgICAgLy8gRGV0
YWNoZWQgYnVmZmVyLgorICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoc2VxdWVuY2UuYnVmZmVyKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKDAsIDApLCBUeXBlRXJyb3IpOwor
fQorCisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKaW5kZXggODg0OTBkYmZlNGNhYWY4NzgyNzk3NzBmNjY1
N2MzZDEzYTkzMzU2NC4uYWJlNzczZDM0MTZjNGY0MmUzYTU5Yzc3YjE0MGRhNDAyNTE5YWQ2NCAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdW5zY29wYWJsZXMuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlQXRNZXRob2Q9MSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRob2Q9MSAt
LXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKIAogZnVuY3Rpb24gdGVzdChhY3R1YWws
IGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkBAIC0xMSw3ICsxMSw3
IEBAIGZ1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogCiAgICAgdGVzdCh0eXBlb2Yg
dW5zY29wYWJsZXMsICJvYmplY3QiKTsKICAgICB0ZXN0KHVuc2NvcGFibGVzLl9fcHJvdG9fXywg
dW5kZWZpbmVkKTsKLSAgICB0ZXN0KFN0cmluZyhPYmplY3Qua2V5cyh1bnNjb3BhYmxlcykuc29y
dCgpKSwgImF0LGNvcHlXaXRoaW4sZW50cmllcyxmaWxsLGZpbmQsZmluZEluZGV4LGZpbmRMYXN0
LGZpbmRMYXN0SW5kZXgsZmxhdCxmbGF0TWFwLGluY2x1ZGVzLGtleXMsdmFsdWVzIik7CisgICAg
dGVzdChTdHJpbmcoT2JqZWN0LmtleXModW5zY29wYWJsZXMpLnNvcnQoKSksICJhdCxjb3B5V2l0
aGluLGVudHJpZXMsZmlsbCxmaW5kLGZpbmRJbmRleCxmaW5kTGFzdCxmaW5kTGFzdEluZGV4LGZs
YXQsZmxhdE1hcCxpbmNsdWRlcyxrZXlzLHRvUmV2ZXJzZWQsdG9Tb3J0ZWQsdG9TcGxpY2VkLHZh
bHVlcyx3aXRoIik7CiB9KCkpOwogCiAoZnVuY3Rpb24gKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457317</attachid>
            <date>2022-04-12 02:31:19 -0700</date>
            <delta_ts>2022-04-12 10:56:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234604-20220412150117.patch</filename>
            <type>text/plain</type>
            <size>32589</size>
            <attacher name="Aditi Singh">asingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDcwZTAwYWRkMThiNWY2NTI3NzFkZGE5OThlNDlmYzFkMzZmM2ZhLi4zN2U3YmZjMWI3MmYxODM1
Zjk1ZThmY2Q5ZTc2OTlhODc5ODcyZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMi0wNC0wNiAgQWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2hhbmdlIEFycmF5IGJ5IGNvcHkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBTaHZheWthLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBwcm9wb3NhbCBDaGFuZ2UgQXJyYXkgQnkgQ29weS4gVGhlIHByb3Bvc2FsIHByb3Zp
ZGVzIGFkZGl0aW9uYWwgCisgICAgICAgIG1ldGhvZHMgb24gQXJyYXkucHJvdG90eXBlIGFuZCBU
eXBlZEFycmF5LnByb3RvdHlwZSB0byBlbmFibGUgY2hhbmdlcyBvbiB0aGUgYXJyYXkgYnkgCisg
ICAgICAgIHJldHVybmluZyBhIG5ldyBjb3B5IG9mIGl0IHdpdGggdGhlIGNoYW5nZS4KKyAgICAg
ICAgU2luY2UsIGEgY2FsbCB0byBpbnRyaW5zaWMgZnVuY3Rpb25zOiBBcnJheS5wcm90b3R5cGUu
c29ydChjb21wYXJlZm4pIGFuZCAKKyAgICAgICAgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zb3J0
KGNvbXBhcmVmbikgd2FzIG5lZWRlZCwgTGlua1RpbWVDb25zdGFudHMgaGF2ZQorICAgICAgICBi
ZWVuIGFkZGVkIGZvciB0aGUgc2FtZS4KKyAgICAgICAgTGlua1RpbWVDb25zdGFudHMgd2VyZSBh
ZGRlZCBpbnN0ZWFkIG9mOgorICAgICAgICBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikgeyByZXR1
cm4gQGFycmF5U29ydC5AY2FsbCh0aGlzLCBjbXApOyB9CisgICAgICAgIGJlY2F1c2UgdGhpcyBp
bnRyb2R1Y2VzIGFuIGV4dHJhIGZ1bmN0aW9uIGNhbGwsIHdoaWNoIGlzIHNsb3dlci4KKyAgICAg
ICAgJSVUeXBlZEFycmF5JSUucHJvdG90eXBlLnNvcnQoY29tcGFyZWZuKSBhbmQgQXJyYXkucHJv
dG90eXBlLnNvcnQoY29tcGFyZWZuKSBhcmUKKyAgICAgICAgaW1wbGVtZW50ZWQgZGlmZmVyZW50
bHkgdG8gYXZvaWQgZWFnZXIgaW5pdGlhbGlzYXRpb24gZm9yIFR5cGVkQXJyYXlQcm90b3R5cGUK
KyAgICAgICAgYmVjYXVzZSBpdCBpcyBxdWl0ZSBsYXJnZSBhbmQgbm90IGNvbW1vbmx5IHVzZWQg
b24gdGhlIHdlYi4gCisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zYWwgZGV0YWlscyBjYW4g
YmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwt
Y2hhbmdlLWFycmF5LWJ5LWNvcHkKKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5UHJvdG90eXBl
LmpzOgorICAgICAgICAodG9SZXZlcnNlZCk6CisgICAgICAgICh0b1NvcnRlZCk6CisgICAgICAg
ICh0b1NwbGljZWQpOgorICAgICAgICAod2l0aCk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczoKKyAg
ICAgICAgKHRvUmV2ZXJzZWQpOgorICAgICAgICAodG9Tb3J0ZWQpOgorICAgICAgICAodG9TcGxp
Y2VkKToKKyAgICAgICAgKHdpdGgpOgorICAgICAgICAoc29ydCk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZWRBcnJheVByb3RvU29ydCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwogMjAyMi0wNC0wNiAgWGFuIExvcGV6ICA8eGFuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyBtb2RlIHRv
IHVuYm94RG91YmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQ
cm90b3R5cGUuanMKaW5kZXggMzMwN2E2ZGMyZDRiYmNhYzQwYjA2N2U2ZWVkODBlZTViMmNlN2Mw
OC4uZDFlN2MwNzkyYWFlODUwZDc4ZTA5YmNiYTc5OTY2YTJjMTlhZTBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtNzk1LDMg
Kzc5NSwxNTkgQEAgZnVuY3Rpb24gYXQoaW5kZXgpCiAKICAgICByZXR1cm4gKGsgPj0gMCAmJiBr
IDwgbGVuZ3RoKSA/IGFycmF5W2tdIDogQHVuZGVmaW5lZDsKIH0KKworZnVuY3Rpb24gdG9SZXZl
cnNlZCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAxLgorICAgIHZhciBh
cnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICAvLyBTdGVw
IDIuCisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgLy8g
U3RlcCAzLgorICAgIHZhciByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZShsZW5ndGgpOworCisg
ICAgLy8gU3RlcCA0LTUuCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgewor
ICAgICAgICB2YXIgZnJvbVZhbHVlID0gYXJyYXlbbGVuZ3RoIC0gayAtIDFdOworICAgICAgICBA
cHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBmcm9tVmFsdWUpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU29ydGVkKGNvbXBhcmVmbikKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEuCisgICAgaWYgKGNvbXBhcmVmbiAhPT0gQHVuZGVm
aW5lZCAmJiAhQGlzQ2FsbGFibGUoY29tcGFyZWZuKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQgcmVxdWlyZXMgdGhlIGNvbXBhcmF0b3IgYXJndW1l
bnQgdG8gYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWQiKTsKKworICAgIC8vIFN0ZXAgMi4KKyAg
ICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS50b1NvcnRlZCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8v
IFN0ZXAgMy4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAg
ICAvLyBTdGVwIDQuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7
CisKKyAgICAvLyBTdGVwIDguCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykK
KyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgYXJyYXlba10pOworCisgICAgLy8g
U3RlcCA2LgorICAgIEBhcnJheVNvcnQuQGNhbGwocmVzdWx0LCBjb21wYXJlZm4pOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdG9TcGxpY2VkKHN0YXJ0LCBkZWxldGVDb3Vu
dCAvKiwgLi4uaXRlbXMgKi8pCit7CisgICAgInVzZSBzdHJpY3QiCisKKyAgICAvLyBTdGVwIDEu
CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudG9TcGxp
Y2VkIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisg
ICAgLy8gU3RlcCAyLgorICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsK
KworICAgIC8vIFN0ZXAgMy4KKyAgICB2YXIgcmVsYXRpdmVTdGFydCA9IEB0b0ludGVnZXJPcklu
ZmluaXR5KHN0YXJ0KTsKKworICAgIHZhciBhY3R1YWxTdGFydDsKKyAgICAvLyBTdGVwIDQtNi4K
KyAgICBpZiAocmVsYXRpdmVTdGFydCA9PT0gLUBJbmZpbml0eSkKKyAgICAgICAgYWN0dWFsU3Rh
cnQgPSAwOworICAgIGVsc2UgaWYgKHJlbGF0aXZlU3RhcnQgPCAwKQorICAgICAgICBhY3R1YWxT
dGFydCA9IGxlbmd0aCArIHJlbGF0aXZlU3RhcnQgPiAwID8gbGVuZ3RoICsgcmVsYXRpdmVTdGFy
dCA6IDA7CisgICAgZWxzZQorICAgICAgICBhY3R1YWxTdGFydCA9IEBtaW4ocmVsYXRpdmVTdGFy
dCwgbGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgNy4KKyAgICB2YXIgaW5zZXJ0Q291bnQgPSAwOwor
ICAgIHZhciBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIC8vIFN0ZXAgOC0xMC4KKyAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSAwOwor
ICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgIGFjdHVhbERlbGV0
ZUNvdW50ID0gbGVuZ3RoIC0gYWN0dWFsU3RhcnQ7CisgICAgZWxzZSB7CisgICAgICAgIGluc2Vy
dENvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgICAgICAgIHZhciB0ZW1wRGVsZXRlQ291
bnQgPSBAdG9JbnRlZ2VyT3JJbmZpbml0eShkZWxldGVDb3VudCk7CisgICAgICAgIHRlbXBEZWxl
dGVDb3VudCA9IHRlbXBEZWxldGVDb3VudCA+IDAgPyB0ZW1wRGVsZXRlQ291bnQgOiAwOworICAg
ICAgICBhY3R1YWxEZWxldGVDb3VudCA9IEBtaW4odGVtcERlbGV0ZUNvdW50LCBsZW5ndGggLSBh
Y3R1YWxTdGFydCk7CisgICAgfQorCisgICAgLy8gU3RlcCAxMS4KKyAgICB2YXIgbmV3TGVuID0g
bGVuZ3RoICsgaW5zZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIC8vIFN0ZXAg
MTIuCisgICAgaWYgKG5ld0xlbiA+PSBATUFYX1NBRkVfSU5URUdFUikKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJBcnJheSBsZW5ndGggZXhjZWVkcyAyKio1MyAtIDEiKTsKKworICAgIC8vIFN0
ZXAgMTMuCisgICAgdmFyIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKG5ld0xlbik7CisKKyAg
ICAvLyBTdGVwIDE0LgorICAgIHZhciBrID0gMDsKKworICAgIC8vIFN0ZXAgMTYuCisgICAgZm9y
ICg7IGsgPCBhY3R1YWxTdGFydDsgaysrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCBhcnJheVtrXSk7CisKKyAgICAvLyBTdGVwIDE3LgorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaW5zZXJ0Q291bnQ7IGkrKywgaysrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCBhcmd1bWVudHNbaSArIDJdKTsKKworICAgIC8vIFN0ZXAgMTguCisgICAgZm9yICg7IGsg
PCBuZXdMZW47IGsrKykgeworICAgICAgICB2YXIgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3Vu
dCAtIGluc2VydENvdW50OworICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCBhcnJh
eVtmcm9tXSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorCitmdW5jdGlvbiB3
aXRoKGluZGV4LCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBTdGVwIDEu
CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUud2l0aCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIC8v
IFN0ZXAgMi4KKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAg
ICAvLyBTdGVwIDMuCisgICAgdmFyIHJlbGF0aXZlSW5kZXggPSBAdG9JbnRlZ2VyT3JJbmZpbml0
eShpbmRleCk7CisKKyAgICAvLyBTdGVwIDQtNS4KKyAgICB2YXIgYWN0dWFsSW5kZXg7CisgICAg
aWYgKHJlbGF0aXZlSW5kZXggPj0gMCkKKyAgICAgICAgYWN0dWFsSW5kZXggPSByZWxhdGl2ZUlu
ZGV4OworICAgIGVsc2UKKyAgICAgICAgYWN0dWFsSW5kZXggPSBsZW5ndGggKyByZWxhdGl2ZUlu
ZGV4OworCisgICAgLy8gU3RlcCA2LgorICAgIGlmIChhY3R1YWxJbmRleCA+PSBsZW5ndGggfHwg
YWN0dWFsSW5kZXggPCAwKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJBcnJheSBpbmRleCBv
dXQgb2YgUmFuZ2UiKTsKKworICAgIC8vIFN0ZXAgNy4KKyAgICB2YXIgcmVzdWx0ID0gQG5ld0Fy
cmF5V2l0aFNpemUobGVuZ3RoKTsKKworICAgIC8vIFN0ZXAgOC05CisgICAgZm9yICh2YXIgayA9
IDA7IGsgPCBsZW5ndGg7IGsrKykgeworICAgICAgICBpZiAoayA9PT0gYWN0dWFsSW5kZXgpCisg
ICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIGFycmF5W2tdKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGEwNTI1NzQ4NzZmYTE0OGFjOTgzYmM0MTcxZjQx
NTVhNzBkM2YwZDkuLjU0ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE5
MSw2ICsxOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhzZW50aW5lbFN0cmluZykg
XAogICAgIG1hY3JvKGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNSZW1vdGVG
dW5jdGlvbikgXAorICAgIG1hY3JvKGFycmF5U29ydCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5
UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQ
cm90b3R5cGUuanMKaW5kZXggNmQ0NGViNmMxNDFlNTA4MmRkNTJhZWUzNWRjMmNjNjlhNzc1Y2U3
NC4uOTNmZWVlNTA0NmU2MzIzZWQ1MTFmMjkyOGU4YWE1Y2ZkZmZmYTBiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMK
QEAgLTIyNiw2ICsyMjYsNyBAQCBmdW5jdGlvbiB0eXBlZEFycmF5TWVyZ2VTb3J0KGFycmF5LCB2
YWx1ZUNvdW50LCBjb21wYXJhdG9yKQogICAgIH0KIH0KIAorQGdsb2JhbFByaXZhdGUKIGZ1bmN0
aW9uIHNvcnQoY29tcGFyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7CkBAIC00MDQsMyArNDA1
LDE1MCBAQCBmdW5jdGlvbiBhdChpbmRleCkKIAogICAgIHJldHVybiAoayA+PSAwICYmIGsgPCBs
ZW5ndGgpID8gdGhpc1trXSA6IEB1bmRlZmluZWQ7CiB9CisKK2Z1bmN0aW9uIHRvUmV2ZXJzZWQo
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0ZXAgMi0zLgorICAgIHZhciBsZW5n
dGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKKworICAgIC8vIFN0ZXAgNC4KKyAgICB2YXIg
Y29uc3RydWN0b3IgPSBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcyk7Cisg
ICAgdmFyIHJlc3VsdCA9IG5ldyBjb25zdHJ1Y3RvcihsZW5ndGgpOworCisgICAgLy8gU3RlcCA1
LTYuCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgeworICAgICAgICB2YXIg
ZnJvbVZhbHVlID0gdGhpc1tsZW5ndGggLSBrIC0gMV07CisgICAgICAgIHJlc3VsdFtrXSA9IGZy
b21WYWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiB0b1Nv
cnRlZChjb21wYXJlZm4pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RlcCAxLgor
ICAgIGlmIChjb21wYXJlZm4gIT09IEB1bmRlZmluZWQgJiYgIUBpc0NhbGxhYmxlKGNvbXBhcmVm
bikpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0
ZWQgcmVxdWlyZXMgdGhlIGNvbXBhcmVmbiBhcmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uIG9yIHVu
ZGVmaW5lZCIpOworCisgICAgLy8gU3RlcCA1LgorICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJh
eUxlbmd0aCh0aGlzKTsKKworICAgIC8vIFN0ZXAgNi4KKyAgICB2YXIgY29uc3RydWN0b3IgPSBA
dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcyk7CisgICAgdmFyIHJlc3VsdCA9
IG5ldyBjb25zdHJ1Y3RvcihsZW5ndGgpOworCisgICAgLy8gU3RlcCAxMS4KKyAgICBmb3IgKHZh
ciBrID0gMDsgayA8IGxlbmd0aDsgaysrKQorICAgICAgICByZXN1bHRba10gPSB0aGlzW2tdOwor
CisgICAgLy8gU3RlcCA5LgorICAgIEBzb3J0LkBjYWxsKHJlc3VsdCwgY29tcGFyZWZuKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHRvU3BsaWNlZChzdGFydCwgZGVsZXRl
Q291bnQgLyosIC4uLml0ZW1zICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0
ZXAgMi0zLgorICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKKworICAg
IC8vIFN0ZXAgNC4KKyAgICB2YXIgcmVsYXRpdmVTdGFydCA9IEB0b0ludGVnZXJPckluZmluaXR5
KHN0YXJ0KTsKKworICAgIC8vIFN0ZXAgNS03LgorICAgIHZhciBhY3R1YWxTdGFydDsKKyAgICBp
ZiAocmVsYXRpdmVTdGFydCA9PT0gLUBJbmZpbml0eSkKKyAgICAgICAgYWN0dWFsU3RhcnQgPSAw
OworICAgIGVsc2UgaWYgKHJlbGF0aXZlU3RhcnQgPCAwKQorICAgICAgICBhY3R1YWxTdGFydCA9
IGxlbmd0aCArIHJlbGF0aXZlU3RhcnQgPiAwID8gbGVuZ3RoICsgcmVsYXRpdmVTdGFydCA6IDA7
CisgICAgZWxzZQorICAgICAgICBhY3R1YWxTdGFydCA9IEBtaW4ocmVsYXRpdmVTdGFydCwgbGVu
Z3RoKTsKKworICAgIC8vIFN0ZXAgOC0xMS4KKyAgICB2YXIgaW5zZXJ0Q291bnQgPSAwOworICAg
IHZhciBhY3R1YWxEZWxldGVDb3VudDsKKworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAw
KQorICAgICAgICBhY3R1YWxEZWxldGVDb3VudCA9IDA7CisgICAgZWxzZSBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSkKKyAgICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBsZW5ndGggLSBhY3R1
YWxTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW5zZXJ0Q291bnQgPSBhcmd1bWVudHMubGVu
Z3RoIC0gMjsKKyAgICAgICAgdmFyIHRlbXBEZWxldGVDb3VudCA9IEB0b0ludGVnZXJPckluZmlu
aXR5KGRlbGV0ZUNvdW50KTsKKyAgICAgICAgdGVtcERlbGV0ZUNvdW50ID0gdGVtcERlbGV0ZUNv
dW50ID4gMCA/IHRlbXBEZWxldGVDb3VudCA6IDA7CisgICAgICAgIGFjdHVhbERlbGV0ZUNvdW50
ID0gQG1pbih0ZW1wRGVsZXRlQ291bnQsIGxlbmd0aCAtIGFjdHVhbFN0YXJ0KTsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDEyLgorICAgIHZhciBuZXdMZW4gPSBsZW5ndGggKyBpbnNlcnRDb3VudCAt
IGFjdHVhbERlbGV0ZUNvdW50OworCisgICAgLy8gU3RlcCAxMy4KKyAgICB2YXIgY29uc3RydWN0
b3IgPSBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcyk7CisgICAgdmFyIHJl
c3VsdCA9IG5ldyBjb25zdHJ1Y3RvcihuZXdMZW4pOworCisgICAgLy8gU3RlcCAxNC4KKyAgICB2
YXIgayA9IDA7CisKKyAgICAvLyBTdGVwIDE2LgorICAgIGZvciAoOyBrIDwgYWN0dWFsU3RhcnQ7
IGsrKykgeworICAgICAgICByZXN1bHRba10gPSB0aGlzW2tdOworICAgIH0KKworICAgIC8vIFN0
ZXAgMTcuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnNlcnRDb3VudDsgaSsrKSB7CisgICAg
ICAgIHJlc3VsdFtrXSA9IGFyZ3VtZW50c1tpICsgMl07CisgICAgICAgIGsrKzsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDE4LgorICAgIGZvciAoOyBrIDwgbmV3TGVuOyBrKyspIHsKKyAgICAgICAg
dmFyIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQgLSBpbnNlcnRDb3VudDsKKyAgICAgICAg
cmVzdWx0W2tdID0gdGhpc1tmcm9tXTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitmdW5jdGlvbiB3aXRoKGluZGV4LCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICAvLyBTdGVwIDItMy4KKyAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7
CisKKyAgICAvLyBTdGVwIDQuCisgICAgdmFyIHJlbGF0aXZlSW5kZXggPSBAdG9JbnRlZ2VyT3JJ
bmZpbml0eShpbmRleCk7CisgICAgdmFyIGFjdHVhbEluZGV4OworCisgICAgLy8gU3RlcCA1LTYu
CisgICAgaWYgKHJlbGF0aXZlSW5kZXggPj0gMCkKKyAgICAgICAgYWN0dWFsSW5kZXggPSByZWxh
dGl2ZUluZGV4OworICAgIGVsc2UKKyAgICAgICAgYWN0dWFsSW5kZXggPSBsZW5ndGggKyByZWxh
dGl2ZUluZGV4OworCisgICAgLy8gU3RlcCA3LgorICAgIGlmIChAaXNEZXRhY2hlZCh0aGlzKSkK
KyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUud2l0aCBjYWxs
ZWQgb24gYW4gZGV0YWNoZWQgYXJyYXkiKTsKKyAgICBpZiAoYWN0dWFsSW5kZXggPCAwIHx8IGFj
dHVhbEluZGV4ID49IGxlbmd0aCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiQXJyYXkgaW5k
ZXggb3V0IG9mIHJhbmdlIikKKworICAgIC8vIFN0ZXAgOC4KKyAgICB2YXIgY29uc3RydWN0b3Ig
PSBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcyk7CisgICAgdmFyIHJlc3Vs
dCA9IG5ldyBjb25zdHJ1Y3RvcihsZW5ndGgpOworCisgICAgLy8gU3RlcCA5LTEwLgorICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKKyAgICAgICAgaWYgKGsgPT0gYWN0dWFs
SW5kZXgpCisgICAgICAgICAgICByZXN1bHRba10gPSB2YWx1ZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0W2tdID0gdGhpc1trXTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKaW5kZXggZGY5OTQyZjIxMjUzYjA4MjZkM2E3ZDkwMDQ4OGY2ZGNiZGQyNzlkNi4uMWM0
N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMTksNiArMTE5
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihzZW50aW5lbFN0cmluZywgbnVsbHB0
cikgXAogICAgIHYoY3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlzUmVt
b3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAogCiAK
ICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRl
eCA5Y2IwNzAwMTQ3MTliYmE0YmRiOTRiY2JhOWU1ZWFiOWJmY2MwZDZhLi42YTUxZmRjZjUxYmY0
ZWNjZmM1MTMwYzJiZjQ4ZWY2NzEzMTdhMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMjIsNyArMTIyLDEyIEBAIHZvaWQg
QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIAogICAgIGlmIChPcHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAgICAgICBK
U0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlQXRDb2RlR2VuZXJh
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkpIHsKKyAg
ICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvUmV2ZXJzZWRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90
eXBlVG9SZXZlcnNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU29ydGVk
UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBK
U0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkudG9TcGxpY2VkUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVRvU3Bs
aWNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLndpdGhQdWJsaWNOYW1lKCks
IGFycmF5UHJvdG90eXBlV2l0aENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
cml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgpLCBn
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQdWJs
aWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CkBAIC0xNDUsNiArMTUw
LDkgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBPcHRpb25zOjp1c2VBcnJheUdyb3VwQnlN
ZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5VG9NYXBQ
dWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLAorICAgICAgICBPcHRpb25zOjp1c2VD
aGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS50b1JldmVyc2VkUHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0aW9uczo6
dXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudG9Tb3J0ZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBPcHRpb25z
Ojp1c2VDaGFuZ2VBcnJheUJ5Q29weU1ldGhvZHMoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS50b1NwbGljZWRQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpCiAgICAgfTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8qIHVuc2NvcGFibGVOYW1lIDogdW5zY29wYWJsZU5hbWVzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggZTYyMTY0YjljOTI4N2M1NWNjN2Q5ZWZlMmIzODE2NTg4MGFiMGUzZC4uMmYzMDdjODI2
MGE0Njg1MGQzNjcyY2FlNDdhMTI1MGE5ZDdjYzhjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODA5LDYgKzgwOSwxMSBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgbnVtYmVy
UHJvdG9GdW5jVG9TdHJpbmcsIE51bWJlclByb3RvdHlwZVRvU3RyaW5nSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwogCisgICAgbV90eXBlZEFycmF5UHJvdG9Tb3J0LmluaXRMYXRlcigKKyAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgdHlwZWRBcnJheVByb3RvdHlw
ZVNvcnRDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lm93bmVyKSk7CisgICAgICAgIH0pOwor
CiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRo
aXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogCiAgICAgbV9udWxsR2V0dGVyRnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRl
ckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKSk7CkBAIC0xMzQ0LDYgKzEzNDksMTAgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwg
aGFzT3duUHJvcGVydHlGdW5jdGlvbikpOwogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0
aW9uKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGhhc093blByb3BlcnR5RnVu
Y3Rpb24pKTsKICAgICB9CisgICAgeworICAgICAgICBKU0Z1bmN0aW9uKiBhcnJheVNvcnQgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGFycmF5UHJvdG90eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc29ydFB1YmxpY05hbWUoKSkpOworICAgICAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjphcnJheVNvcnQpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYXJyYXlTb3J0
KSk7CisgICAgfQogCiAjZGVmaW5lIElOSVRfUFJJVkFURV9HTE9CQUwoZnVuY05hbWUsIGNvZGUp
IFwKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpmdW5jTmFtZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeyBcCkBAIC0yMjI3LDYgKzIyMzYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwog
ICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0
ZXIudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQo
dmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV90eXBlZEFycmF5UHJvdG9Tb3J0LnZpc2l0KHZp
c2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZmJlMmEyMWRjMDc1OTE2NmRkNWMwZTMwM2RkNjhjZWNhODllMDVkOC4uMGRmYzc2MDNhODQ0
YWQzYjI1NmIwOTVlOGUwZTQ2YWU3Y2YxZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zNTYsNiArMzU2LDcgQEAgcHVibGljOgog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbjsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fdHlwZWRBcnJheVByb3Rv
U29ydDsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVn
RXhwUHJvdG9TeW1ib2xSZXBsYWNlOwpAQCAtNzI1LDYgKzcyNiw3IEBAIHB1YmxpYzoKICAgICBK
U0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCh0
aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9u
KCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogdHlwZWRBcnJheVByb3RvU29ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZWRBcnJheVByb3RvU29ydC5nZXQodGhpcyk7IH0KICAgICBKU09iamVjdCog
cmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCAwMTE1YzBjNjlh
MTgzMzExYmQ0YjQ3NTBjM2QxNGIyZjVjNzY2OTY4Li5jZWFmMmY5ZDkyNjkwMmIzNDc4Y2IzMjhm
ZTVhMWNmNzQwMDUyYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtNDQxLDYgKzQ0MSw3
IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZywgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnNvcnRQdWJsaWNOYW1lKCksIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVByb3Rv
U29ydCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04oImJ1ZmZlciJf
cywgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX05BVElW
RV9JTlRSSU5TSUNfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
eXRlTGVuZ3RoLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgVHlw
ZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWMpOwpAQCAtNDQ4LDcgKzQ0OSw2IEBAIHZvaWQgSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImNvcHlXaXRoaW4iX3MsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZXZlcnkiX3MsIHR5cGVk
QXJyYXlQcm90b3R5cGVFdmVyeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImZpbHRlciJfcywgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKLSAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNv
cnQiX3MsIHR5cGVkQXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVu
Y0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIl9zLCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlsbFB1YmxpY05hbWUoKSwgdHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNGaWxsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CkBAIC00NzQsNiArNDc0LDEyIEBAIHZvaWQgSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPnN1YmFycmF5LCB0eXBlZEFycmF5UHJvdG90eXBlU3ViYXJyYXlDb2Rl
R2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nLCB0eXBlZEFycmF5UHJvdG90eXBlVG9Mb2NhbGVT
dHJpbmdDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2hhbmdlQXJyYXlCeUNvcHlN
ZXRob2RzKCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJ0b1JldmVyc2VkIl9zLCB0eXBlZEFycmF5UHJvdG90eXBlVG9SZXZlcnNlZENvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b1Nv
cnRlZCJfcywgdHlwZWRBcnJheVByb3RvdHlwZVRvU29ydGVkQ29kZUdlbmVyYXRvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBK
U0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvU3BsaWNlZCJfcywgdHlw
ZWRBcnJheVByb3RvdHlwZVRvU3BsaWNlZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ3aXRoIl9zLCB0eXBlZEFycmF5UHJvdG90eXBl
V2l0aENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAg
ICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3RvdHlw
ZUF0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAppbmRleCA0MGYwYzc5NjZjZjg3Y2MxYzdlNmJhYzY0MWE1NmZlMzZiZmUwMmE2Li4yYTAx
MTkxY2UxOWM2YWNhNmU3MTU5MmEzZThkMzM4MmIyZjExMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0MCw2ICs1NDAsNyBAQCBib29sIGNh
blVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlQXJyYXlGaW5kTGFz
dE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBmaW5kTGFzdCgpIGFuZCBmaW5kTGFz
dEluZGV4KCkgbWV0aG9kcyBvbiBBcnJheSBhbmQgJVR5cGVkQXJyYXklLiIpIFwKICAgICB2KEJv
b2wsIHVzZUFycmF5R3JvdXBCeU1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZ3Jv
dXBCeSgpIGFuZCBncm91cEJ5VG9NYXAoKSBtZXRob2RzIG9uIEFycmF5LiIpIFwKICAgICB2KEJv
b2wsIHVzZUF0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGF0KCkgbWV0aG9kIG9u
IEFycmF5LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikgXAorICAgIHYoQm9vbCwgdXNlQ2hh
bmdlQXJyYXlCeUNvcHlNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSB3aXRoQXQo
KSwgd2l0aFJldmVyc2VkKCksIHdpdGhTb3J0ZWQoKSBhbmQgd2l0aFNwbGljZWQoKSBtZXRob2Rz
IG9uIEFycmF5IGFuZCAlVHlwZWRBcnJheSUuIikgXAogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0
cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIE9iamVjdC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYo
Qm9vbCwgdXNlSW1wb3J0QXNzZXJ0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRW5hYmxlIGltcG9ydCBh
c3NlcnRpb24uIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVlLCBOb3Jt
YWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4YjhmZWRmZjdjNWZh
MjZjODAxNjkzNmEwNTYzOWE5NWRkMTg2YmQuLjFlNmRkZTkxN2QxNTU1OWU1ZjAxYjJkYzczYTA0
YTEwOGEyMTIxYTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDQtMDYgIEFkaXRpIFNpbmdoICA8YXNp
bmdoQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENoYW5nZSBBcnJheSBieSBjb3B5
IHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgU2h2YXlrYS4KKworICAgICAg
ICAqIHN0cmVzcy9jaGFuZ2UtYXJyYXktYnktY29weS5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaGFsbG93RXF1YWwpOgor
ICAgICAgICAoc2hvdWxkVGhyb3cuQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZC50b1JldmVyc2Vk
KToKKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktY2hhbmdlLWJ5LWNvcHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
c2hhbGxvd0VxdWFsKToKKyAgICAgICAgKHNlcXVlbmNlLm5ldy5VaW50OEFycmF5KToKKyAgICAg
ICAgKiBzdHJlc3MvdW5zY29wYWJsZXMuanM6CisKIDIwMjItMDQtMDEgIEFuZ2Vsb3MgT2lrb25v
bW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2tpcCBmbGFreSB0ZXN0
IG9uIG1pcHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2hhbmdlLWFycmF5LWJ5LWNvcHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmM1Y2EyMmM2ODU0MzM0ZDZkZDE3OGY4NmIyOWU0ZjE0NzkxNmMwZQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hcnJheS1ieS1jb3B5LmpzCkBAIC0wLDAgKzEsMTE3
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2hhbmdlQXJyYXlCeUNvcHlNZXRob2RzPTEi
KQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKCFzaGFs
bG93RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4
cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJy
b3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JU
eXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1l
fSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0n
KSB7CisgICAgICAgICAgICBpZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0
byBtYXRjaCAke21lc3NhZ2V9IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBleHBlY3RlZCAke1N0cmluZyhlcnJvcil9IGJ1dCBnb3QgJHttZXNzYWdlfWApOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikgeworICAgIGlm
IChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJb
aV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCit2YXIgc2VxdWVuY2UgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdOworCisv
LyBBcnJheS5wcm90b3R5cGUudG9SZXZlcnNlZCgpCit7CisgICAgbGV0IHJldmVyc2VkU2VxdWVu
Y2UgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7CisgICAgc2hvdWxkQmUocmV2ZXJzZWRTZXF1ZW5j
ZSwgWzEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxXSk7CisKKyAgICAvLyB8dGhpc3wgPSBu
dWxsLgorICAgIHNob3VsZFRocm93KCgpID0+IEFycmF5LnByb3RvdHlwZS50b1NwbGljZWQudG9S
ZXZlcnNlZChudWxsLCAwLCA1KSwgVHlwZUVycm9yKTsKK30KKworLy8gQXJyYXkucHJvdG90eXBl
LnRvU29ydGVkKCkKK3sKKyAgICB2YXIgdW5zb3J0ZWRTZXF1ZW5jZSA9IFs5LCAyLCAzLCA0LCA1
NiwgMTIsIDBdOworICAgIHZhciBzb3J0ZWRTZXF1ZW5jZSA9IHVuc29ydGVkU2VxdWVuY2UudG9T
b3J0ZWQoKTsKKyAgICBzaG91bGRCZShzb3J0ZWRTZXF1ZW5jZSwgWzAsIDEyLCAyLCAzLCA0LCA1
NiwgOV0pOworCisgICAgLy8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBB
cnJheS5wcm90b3R5cGUudG9Tb3J0ZWQuY2FsbChudWxsKSwgVHlwZUVycm9yKTsKKworICAgIC8v
IE5vbiBjYWxsYWJsZSBjb21wYXJhdG9yLgorICAgIHZhciBub25DYWxsYWJsZUNvbXBhcmF0b3Ig
PSAiYSI7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gdW5zb3J0ZWRTZXF1ZW5jZS50b1NvcnRlZChu
b25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3IpOworfQorCisvLyBBcnJheS5wcm90b3R5
cGUudG9TcGxpY2VkKCkKK3sKKyAgICB2YXIgc3BsaWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9T
cGxpY2VkKDMsIDUpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgWzEsIDIsIDMsIDks
IDEwXSk7CisKKyAgICAvLyBTdGFydCBtaXNzaW5nLgorICAgIHNwbGljZWRTZXF1ZW5jZSA9IHNl
cXVlbmNlLnRvU3BsaWNlZCgpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwgc2VxdWVu
Y2UpOworCisgICAgLy8gRGVsZXRlIGNvdW50IG1pc3NpbmcuCisgICAgc3BsaWNlZFNlcXVlbmNl
ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMpOworICAgIHNob3VsZEJlKHNwbGljZWRTZXF1ZW5jZSwg
WzEsIDIsIDNdKTsKKworICAgIC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkU2VxdWVu
Y2UgPSBzZXF1ZW5jZS50b1NwbGljZWQodW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxpY2Vk
U2VxdWVuY2UsIFtdKTsKKworICAgIC8vIERlbGV0ZSBjb3VudCB1bmRlZmluZWQuCisgICAgc3Bs
aWNlZFNlcXVlbmNlID0gc2VxdWVuY2UudG9TcGxpY2VkKDEsIHVuZGVmaW5lZCk7CisgICAgc2hv
dWxkQmUoc3BsaWNlZFNlcXVlbmNlLCBzZXF1ZW5jZSk7CisKKyAgICAvLyBJbnNlcnRpb24KKyAg
ICBzcGxpY2VkU2VxdWVuY2UgPSBzZXF1ZW5jZS50b1NwbGljZWQoMywgNSwgMTEsIDEyLCAxMyk7
CisgICAgc2hvdWxkQmUoc3BsaWNlZFNlcXVlbmNlLCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwg
MTBdKTsKKworICAgIC8vIHx0aGlzfCA9IG51bGwuCisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJy
YXkucHJvdG90eXBlLnRvU3BsaWNlZC5jYWxsKG51bGwsIDAsIDUpLCBUeXBlRXJyb3IpOworCisg
ICAgLy8gTGVuZ3RoID49IDJeNTMgLSAxLgorICAgIHZhciBhcnJheUxpa2UgPSB7fTsKKyAgICBh
cnJheUxpa2UubGVuZ3RoID0gMiAqKiA1MyAtIDE7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gQXJy
YXkucHJvdG90eXBlLnRvU3BsaWNlZC5jYWxsKGFycmF5TGlrZSwgMCwgMCwgbnVsbCksIFR5cGVF
cnJvcik7Cit9CisKKy8vQXJyYXkucHJvdG90eXBlLndpdGgoKQoreworICAgIHZhciB3aXRoU2Vx
dWVuY2UgPSBzZXF1ZW5jZS53aXRoKDMsICJhIik7CisgICAgc2hvdWxkQmUod2l0aFNlcXVlbmNl
LCBbMSwgMiwgMywgImEiLCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW5kZXggbWlz
c2luZy4KKyAgICB3aXRoU2VxdWVuY2UgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxkQmUo
d2l0aFNlcXVlbmNlLCBbdW5kZWZpbmVkLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOwor
CisgICAgLy8gSW5kZXggdW5kZWZpbmVkLgorICAgIHdpdGhTZXF1ZW5jZSA9IHNlcXVlbmNlLndp
dGgodW5kZWZpbmVkLCAiYSIpOworICAgIHNob3VsZEJlKHdpdGhTZXF1ZW5jZSwgWyJhIiwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKworICAgIC8vIEludmFsaWQgaW5kZXguCisgICAg
c2hvdWxkVGhyb3coKCkgPT4gc2VxdWVuY2Uud2l0aCgtMTEsICJhIiksIFJhbmdlRXJyb3IpOwor
CisgICAgLy8gfHRoaXN8ID0gbnVsbC4KKyAgICBzaG91bGRUaHJvdygoKSA9PiBBcnJheS5wcm90
b3R5cGUudG9SZXZlcnNlZC53aXRoKG51bGwsIDUsICJhIiksIFR5cGVFcnJvcik7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNoYW5nZS1ieS1jb3B5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
MzEyZmEzMjUxODdiZGQ2YTM3NzRlZDg3Y2FhM2I5NDYyZDZmNmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jaGFuZ2UtYnktY29weS5qcwpAQCAtMCwwICsx
LDEwNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9k
cz0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmICgh
c2hhbGxvd0VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKXsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworICAgIH0KK30KKwor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0
IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVy
cm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUu
bmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAo
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdF
eHBdJykgeworICAgICAgICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3Ip
fScgdG8gbWF0Y2ggJHttZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgZXhwZWN0ZWQgJHtTdHJpbmcoZXJyb3IpfSBidXQgZ290ICR7bWVzc2FnZX1gKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGEsIGIpIHsKKyAg
ICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9
PSBiW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordmFyIHNlcXVlbmNlID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgsIDksIDEwXSk7CisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvUmV2ZXJzZWQoKQor
eworICAgIHZhciByZXZlcnNlZFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS50b1JldmVyc2VkKCk7Cisg
ICAgc2hvdWxkQmUocmV2ZXJzZWRUeXBlZEFycmF5LCBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMs
IDIsIDFdKTsKK30KKworLy8gVHlwZWRBcnJheS5wcm90b3R5cGUudG9Tb3J0ZWQoKQoreworICAg
IHZhciB1bnNvcnRlZFR5cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheShbOSwgMiwgMywgNCwgNTYs
IDEyLCAwXSk7CisgICAgbGV0IHNvcnRlZFR5cGVkQXJyYXkgPSB1bnNvcnRlZFR5cGVkQXJyYXku
dG9Tb3J0ZWQoKTsKKyAgICBzaG91bGRCZShzb3J0ZWRUeXBlZEFycmF5LCBbMCwgMiwgMywgNCwg
OSwgMTIsIDU2XSk7CisKKyAgICAvLyBOb24gY2FsbGFibGUgY29tcGFyYXRvci4KKyAgICB2YXIg
bm9uQ2FsbGFibGVDb21wYXJhdG9yID0gImEiOworICAgIHNob3VsZFRocm93KCgpID0+IHVuc29y
dGVkVHlwZWRBcnJheS50b1NvcnRlZChub25DYWxsYWJsZUNvbXBhcmF0b3IpLCBUeXBlRXJyb3Ip
OworfQorCisKKy8vIFR5cGVkQXJyYXkucHJvdG90eXBlLnRvU3BsaWNlZCgpCit7CisgICAgdmFy
IHNwbGljZWRUeXBlZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUpOworICAgIHNob3Vs
ZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgOSwgMTBdKTsKKworICAgIC8vIFN0YXJ0
IG1pc3NpbmcKKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3BsaWNlZCgpOwor
ICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBzZXF1ZW5jZSk7CisKKyAgICAvLyBEZWxl
dGUgY291bnQgbWlzc2luZy4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNlLnRvU3Bs
aWNlZCgzKTsKKyAgICBzaG91bGRCZShzcGxpY2VkVHlwZWRBcnJheSwgWzEsIDIsIDNdKTsKKwor
ICAgIC8vIFN0YXJ0IHVuZGVmaW5lZC4KKyAgICBzcGxpY2VkVHlwZWRBcnJheSA9IHNlcXVlbmNl
LnRvU3BsaWNlZCh1bmRlZmluZWQpOworICAgIHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBb
XSk7CisKKyAgICAvLyBEZWxldGUgY291bnQgdW5kZWZpbmVkCisgICAgc3BsaWNlZFR5cGVkQXJy
YXkgPSBzZXF1ZW5jZS50b1NwbGljZWQoMywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShzcGxp
Y2VkVHlwZWRBcnJheSwgc2VxdWVuY2UpOworCisgICAgLy8gSW5zZXJ0aW9uLgorICAgIHNwbGlj
ZWRUeXBlZEFycmF5ID0gc2VxdWVuY2UudG9TcGxpY2VkKDMsIDUsIDExLCAxMiwgMTMpOworICAg
IHNob3VsZEJlKHNwbGljZWRUeXBlZEFycmF5LCBbMSwgMiwgMywgMTEsIDEyLCAxMywgOSwgMTBd
KTsKK30KKworLy8gVHlwZWRBcnJheS5wcm90b3R5cGUud2l0aCgpCit7CisgICAgdmFyIHdpdGhU
eXBlZEFycmF5ID0gc2VxdWVuY2Uud2l0aCgzLCAwKTsKKyAgICBzaG91bGRCZSh3aXRoVHlwZWRB
cnJheSwgWzEsIDIsIDMsIDAsIDUsIDYsIDcsIDgsIDksIDEwXSk7CisKKyAgICAvLyBJbmRleCBt
aXNzaW5nCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRoKCk7CisgICAgc2hvdWxk
QmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisg
ICAgLy8gSW5kZXggdW5kZWZpbmVkCisgICAgd2l0aFR5cGVkQXJyYXkgPSBzZXF1ZW5jZS53aXRo
KHVuZGVmaW5lZCwgMCk7CisgICAgc2hvdWxkQmUod2l0aFR5cGVkQXJyYXksIFswLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworCisgICAgLy8gSW52YWxpZCBpbmRleC4KKyAgICBzaG91
bGRUaHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKC0xMSwgMCksIFJhbmdlRXJyb3IpOworCisgICAg
Ly8gRGV0YWNoZWQgYnVmZmVyLgorICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoc2VxdWVuY2UuYnVm
ZmVyKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBzZXF1ZW5jZS53aXRoKDAsIDApLCBUeXBlRXJy
b3IpOworfQorCisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Vuc2NvcGFibGVzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKaW5kZXggODg0OTBkYmZlNGNhYWY4NzgyNzk3
NzBmNjY1N2MzZDEzYTkzMzU2NC4uNjc0NmI3ODNlZDUyZWQ0MDc1OWM0NTA5YTQxOTBiMDZmMTVj
M2ZmNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdW5zY29wYWJsZXMuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlQXRNZXRob2Q9MSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXRNZXRo
b2Q9MSIsICItLXVzZUNoYW5nZUFycmF5QnlDb3B5TWV0aG9kcz0xIikKIAogZnVuY3Rpb24gdGVz
dChhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkBAIC0x
MSw3ICsxMSw3IEBAIGZ1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogCiAgICAgdGVz
dCh0eXBlb2YgdW5zY29wYWJsZXMsICJvYmplY3QiKTsKICAgICB0ZXN0KHVuc2NvcGFibGVzLl9f
cHJvdG9fXywgdW5kZWZpbmVkKTsKLSAgICB0ZXN0KFN0cmluZyhPYmplY3Qua2V5cyh1bnNjb3Bh
Ymxlcykuc29ydCgpKSwgImF0LGNvcHlXaXRoaW4sZW50cmllcyxmaWxsLGZpbmQsZmluZEluZGV4
LGZpbmRMYXN0LGZpbmRMYXN0SW5kZXgsZmxhdCxmbGF0TWFwLGluY2x1ZGVzLGtleXMsdmFsdWVz
Iik7CisgICAgdGVzdChTdHJpbmcoT2JqZWN0LmtleXModW5zY29wYWJsZXMpLnNvcnQoKSksICJh
dCxjb3B5V2l0aGluLGVudHJpZXMsZmlsbCxmaW5kLGZpbmRJbmRleCxmaW5kTGFzdCxmaW5kTGFz
dEluZGV4LGZsYXQsZmxhdE1hcCxpbmNsdWRlcyxrZXlzLHRvUmV2ZXJzZWQsdG9Tb3J0ZWQsdG9T
cGxpY2VkLHZhbHVlcyIpOwogfSgpKTsKIAogKGZ1bmN0aW9uICgpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>