<?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>148125</bug_id>
          
          <creation_ts>2015-08-18 00:44:16 -0700</creation_ts>
          <short_desc>Add ability to save and restore JSC options.</short_desc>
          <delta_ts>2015-08-19 17:19:50 -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 Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147968</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118483</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 00:44:16 -0700</bug_when>
    <thetext>This is needed for testing purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118489</commentid>
    <comment_count>1</comment_count>
      <attachid>259259</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 01:11:39 -0700</bug_when>
    <thetext>Created attachment 259259
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118490</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 01:14:02 -0700</bug_when>
    <thetext>Attachment 259259 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:416:  The parameter name &quot;level&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Options.h:418:  The parameter name &quot;level&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Options.h:418:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/API/JSOptions.cpp:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:379:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:384:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 6 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118493</commentid>
    <comment_count>3</comment_count>
      <attachid>259260</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 01:28:12 -0700</bug_when>
    <thetext>Created attachment 259260
fix 2: fixed some style issues.

The remaining 2 style complaints are bogus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118494</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 01:29:25 -0700</bug_when>
    <thetext>Attachment 259260 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSOptions.cpp:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:379:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118522</commentid>
    <comment_count>5</comment_count>
      <attachid>259260</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 08:50:21 -0700</bug_when>
    <thetext>Comment on attachment 259260
fix 2: fixed some style issues.

Has bugs.  Will fix.  Cancelling review for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118544</commentid>
    <comment_count>6</comment_count>
      <attachid>259260</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-18 10:09:37 -0700</bug_when>
    <thetext>Comment on attachment 259260
fix 2: fixed some style issues.

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

&gt; Source/JavaScriptCore/API/JSOptionsPrivate.h:56
&gt; + @abstract Gets the JSC options in a string.
&gt; + @result A pointer to a string of options.
&gt; + @discussion When done, the user must call JSReleaseOptions to release the gotten options string.
&gt; + */
&gt; +JS_EXPORT const char* JSGetOptions();
&gt; +
&gt; +/*!
&gt; + @function
&gt; + @abstract Sets options specified in the options string.
&gt; + @param options The options that will be applied.
&gt; + */
&gt; +JS_EXPORT void JSSetOption(const char* options);
&gt; +
&gt; +/*!
&gt; + @function
&gt; + @abstract Releases the previously saved JSOptions.
&gt; + @param savedOptions The previously saved JSOptions.
&gt; + */
&gt; +JS_EXPORT void JSReleaseOptions(const char* savedOptions);
&gt; +    

We shouldn&apos;t add API just for testing. Our testing code can use internal headers directly instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118613</commentid>
    <comment_count>7</comment_count>
      <attachid>259293</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 13:15:52 -0700</bug_when>
    <thetext>Created attachment 259293
fix 3: fixed previous bug in tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118614</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 13:17:48 -0700</bug_when>
    <thetext>Attachment 259293 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.cpp:379:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118617</commentid>
    <comment_count>9</comment_count>
      <attachid>259294</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 13:41:29 -0700</bug_when>
    <thetext>Created attachment 259294
fix 4: fixed builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118618</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 13:43:08 -0700</bug_when>
    <thetext>Attachment 259294 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.cpp:379:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118989</commentid>
    <comment_count>11</comment_count>
      <attachid>259294</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-19 13:29:39 -0700</bug_when>
    <thetext>Comment on attachment 259294
fix 4: fixed builds.

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

r=me

&gt; Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp:120
&gt; +        JSValueRef v = nullptr;

can we name this scriptResult or something better than &quot;v&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119000</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-19 13:42:58 -0700</bug_when>
    <thetext>Thanks.  I&apos;ve renamed &quot;v&quot; to &quot;scriptResult&quot; in the test as you suggested.

Landed in 188648: &lt;http://trac.webkit.org/r188648&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119108</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-19 17:19:50 -0700</bug_when>
    <thetext>This introduced some Windows test failures

Starting 5 threads for CompareAndSwap test.  Test should complete without hanging.
   started Thread 0
   started Thread 1
   started Thread 2
Waiting for 5 threads to join
   started Thread 3
   finished Thread 2
   finished Thread 1
   finished Thread 3
   finished Thread 0
   started Thread 4
   finished Thread 4
PASS: CompareAndSwap test completed without a hang
PASS: returned private data when set by JSObjectSetPrivate().
PASS: returned null when accessing character pointer of a null String.
PASS: returned empty when accessing character pointer of an empty String.
PASS: returned 0 length for null String.
PASS: returned 0 length for empty String.
PASS: Set private property.
PASS: Did not allow JSObjectSetPrivateProperty on a non-API object.
PASS: Retrieved private property.
PASS: JSObjectGetPrivateProperty return NULL.
PASS: Cannot access private property through ordinary property lookup.
PASS: Private property does not appear to have been collected.
PASS: Set private property to NULL.
PASS: Retrieved private property.
PASS: Parsed null String as JSON correctly.
PASS: Parsed valid JSON string.
PASS: Correctly returned null for invalid JSON data.
PASS: Correctly serialised with indent of 0.
PASS: Correctly serialised with indent of 4.
PASS: returned null when attempting to serialize unserializable value.
PASS: returned null when attempting to serialize unserializable value.
PASS: set exception on serialisation error
PASS: globalStaticValue should be 3 and is.
PASS: globalStaticFunction() should be 4 and is.
PASS: this.globalStaticFunction() should be 4 and is.
PASS: globalStaticFunction2(); should be 10 and is.
PASS: globalStaticFunction2(); should be 20 and is.
PASS: this.globalStaticFunction2(); should be 20 and is.
PASS: iAmNotAStaticFunction(); should be 10 and is.
PASS: iAmNotAStaticFunction(); should be 20 and is.
PASS: typeof MyObject should be function and is.
PASS: MyObject.cantFind should be undefined and is.
PASS: MyObject.regularType should be 1 and is.
PASS: MyObject.alwaysOne should be 1 and is.
PASS: MyObject.cantDelete should be 1 and is.
PASS: delete MyObject.throwOnDelete should be an exception and is.
PASS: MyObject.cantSet should be undefined and is.
PASS: MyObject.throwOnGet should be an exception and is.
PASS: MyObject.throwOnSet = 5 should be an exception and is.
PASS: MyObject(&apos;throwOnCall&apos;) should be an exception and is.
PASS: new MyObject(&apos;throwOnConstruct&apos;) should be an exception and is.
PASS: &apos;throwOnHasInstance&apos; instanceof MyObject should be an exception and is.
PASS: MyObject.nullGetForwardSet should be 1 and is.
PASS: MyObject.myPropertyName was enumerated
PASS: MyObject.regularType was enumerated
PASS: typeof alwaysOneDescriptor should be object and is.
PASS: alwaysOneDescriptor.value should be 1 and is.
PASS: alwaysOneDescriptor.configurable should be true and is.
PASS: alwaysOneDescriptor.enumerable should be false and is.
PASS: typeof cantFindDescriptor should be object and is.
PASS: cantFindDescriptor.value should be undefined and is.
PASS: cantFindDescriptor.configurable should be true and is.
PASS: cantFindDescriptor.enumerable should be false and is.
PASS: getting property descriptor of throwOnGet threw exception
PASS: typeof myPropertyNameDescriptor should be object and is.
PASS: myPropertyNameDescriptor.value should be 1 and is.
PASS: myPropertyNameDescriptor.configurable should be true and is.
PASS: myPropertyNameDescriptor.enumerable should be false and is.
PASS: getting property descriptor of hasPropertyLie threw exception
PASS: Object.getOwnPropertyDescriptor(MyObject, &quot;doesNotExist&quot;) should be undefined and is.
PASS: delete MyObject.regularType should be true and is.
PASS: MyObject.regularType should be undefined and is.
PASS: MyObject(0) should be 1 and is.
PASS: MyObject() should be undefined and is.
PASS: typeof myObject should be object and is.
PASS: MyObject ? 1 : 0 should be true and is.
PASS: +MyObject should be 1 and is.
PASS: (Object.prototype.toString.call(MyObject)) should be [object MyObject] and is.
PASS: (MyObject.toString()) should be [object MyObject] and is.
PASS: String(MyObject) should be MyObjectAsString and is.
PASS: MyObject - 0 should be 1 and is.
PASS: MyObject.valueOf() should be 1 and is.
PASS: typeof MyConstructor should be object and is.
PASS: typeof constructedObject should be object and is.
PASS: constructedObject.value should be 1 and is.
PASS: myObject instanceof MyObject should be true and is.
PASS: (new Object()) instanceof MyObject should be false and is.
PASS: new MyBadConstructor() threw: TypeError: Type error
PASS: MyObject.nullGetSet should be 1 and is.
PASS: MyObject.nullCall() threw: ReferenceError: Static function property defined with NULL callAsFunction callback.
PASS: MyObject.hasPropertyLie threw: ReferenceError: hasProperty callback returned true for a property that doesn&apos;t exist.
PASS: derived instanceof Derived should be true and is.
PASS: derived instanceof Base should be true and is.
PASS: derived.baseProtoDup() should be 2 and is.
PASS: derived.baseProto() should be 1 and is.
PASS: derived.baseDup should be 2 and is.
PASS: derived.baseOnly should be 1 and is.
PASS: derived.protoOnly() should be 2 and is.
PASS: derived.protoDup should be 2 and is.
PASS: derived.derivedOnly should be 2 and is.
PASS: derived.baseHardNull() should be undefined and is.
PASS: derived.baseDup = 0 should be 2 and is.
PASS: derived.baseOnly = 0 should be 1 and is.
PASS: derived.derivedOnly = 0 should be 2 and is.
PASS: derived.protoDup = 0 should be 2 and is.
PASS: derived2 instanceof Derived2 should be true and is.
PASS: derived2 instanceof Derived should be true and is.
PASS: derived2 instanceof Base should be true and is.
PASS: derived2.baseProtoDup() should be 2 and is.
PASS: derived2.baseProto() should be 1 and is.
PASS: derived2.baseDup should be 2 and is.
PASS: derived2.baseOnly should be 1 and is.
PASS: derived2.protoOnly() should be 2 and is.
PASS: derived2.protoDup should be 2 and is.
PASS: derived2.derivedOnly should be 2 and is.
PASS: derived2.baseDup = 0 should be 2 and is.
PASS: derived2.baseOnly = 0 should be 1 and is.
PASS: derived2.derivedOnly = 0 should be 2 and is.
PASS: derived2.protoDup = 0 should be 2 and is.
PASS: Object.getOwnPropertyDescriptor(derived, &quot;baseProto&quot;) should be undefined and is.
PASS: Object.getOwnPropertyDescriptor(derived, &quot;baseProtoDup&quot;) should be undefined and is.
PASS: typeof baseDupDescriptor should be object and is.
PASS: baseDupDescriptor.value should be 2 and is.
PASS: baseDupDescriptor.configurable should be true and is.
PASS: baseDupDescriptor.enumerable should be false and is.
PASS: typeof baseOnlyDescriptor should be object and is.
PASS: baseOnlyDescriptor.value should be 1 and is.
PASS: baseOnlyDescriptor.configurable should be true and is.
PASS: baseOnlyDescriptor.enumerable should be false and is.
PASS: Object.getOwnPropertyDescriptor(derived, &quot;protoOnly&quot;) should be undefined and is.
PASS: typeof protoDupDescriptor should be object and is.
PASS: protoDupDescriptor.value should be 2 and is.
PASS: protoDupDescriptor.configurable should be true and is.
PASS: protoDupDescriptor.enumerable should be false and is.
PASS: typeof derivedOnlyDescriptor should be object and is.
PASS: derivedOnlyDescriptor.value should be 2 and is.
PASS: derivedOnlyDescriptor.configurable should be true and is.
PASS: derivedOnlyDescriptor.enumerable should be false and is.
PASS: undefined instanceof MyObject should be false and is.
PASS: undefined instanceof EvilExceptionObject threw: RangeError: Maximum call stack size exceeded.
PASS: undefined instanceof EvilExceptionObject should be true and is.
PASS: EvilExceptionObject*5 threw: RangeError: Maximum call stack size exceeded.
PASS: String(EvilExceptionObject) threw: RangeError: Maximum call stack size exceeded.
PASS: console should be [object Console] and is.
PASS: typeof console.log should be function and is.
PASS: EmptyObject should be [object CallbackObject] and is.
PASS: PropertyCatchalls.x should be 4 and is.
PASS: x should be null and is.
PASS: PropertyCatchalls[make_throw]=1 threw: 5
PASS: PropertyCatchalls[make_throw]=1 threw: 5
PASS: y should be null and is.
PASS: z should be null and is.
PASS: Test script executed successfully.
PASS: Promise is exposed under JSContext API.
PASS: LLINT script timed out as expected.
PASS: LLINT TerminatedExecutionException was not catchable as expected.
PASS: LLINT script timed out as expected when no callback is specified.
PASS: LLINT script timeout was cancelled as expected.
PASS: LLINT script timeout was extended as expected.
PASS: Baseline script timed out as expected.
PASS: Baseline TerminatedExecutionException was not catchable as expected.
PASS: Baseline script timed out as expected when no callback is specified.
PASS: Baseline script timeout was cancelled as expected.
FAIL: Baseline script did not timeout.
PASS: DFG script timed out as expected.
PASS: DFG TerminatedExecutionException was not catchable as expected.
PASS: DFG script timed out as expected when no callback is specified.
PASS: DFG script timeout was cancelled as expected.
FAIL: DFG script did not timeout.
PASS: FTL script timed out as expected.
PASS: FTL TerminatedExecutionException was not catchable as expected.
PASS: FTL script timed out as expected when no callback is specified.
PASS: FTL script timeout was cancelled as expected.
FAIL: FTL script did not timeout.
PASS: JSGlobalContextRef called its JSClassRef finalizer as expected.
PASS: Infinite prototype chain does not occur.
PASS: A cycle in a prototype chain can&apos;t be created.
PASS: throwException did not crash when handling an error with appendMessageToError set and no codeBlock available.
PASS: global context name behaves as expected.
FAIL: Some tests failed.
testAPI completed with rc=256 (1)
program finished with exit code 1
elapsedTime=4.960808</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259259</attachid>
            <date>2015-08-18 01:11:39 -0700</date>
            <delta_ts>2015-08-18 01:28:12 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-148125.patch</filename>
            <type>text/plain</type>
            <size>41336</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE1LTA4LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYWJpbGl0eSB0byBzYXZlIGFuZCByZXN0b3JlIEpTQyBvcHRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNPcHRpb25zLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0dldE9wdGlvbnMpOgorICAgICAgICAoSlNTZXRPcHRpb24pOgor
ICAgICAgICAoSlNSZWxlYXNlT3B0aW9ucyk6CisgICAgICAgICogQVBJL0pTT3B0aW9uc1ByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIC0gTmV3IHByaXZhdGUgQVBJcyBmb3IgZ2V0dGluZyBhbmQg
c2V0dGluZyBKU0Mgb3B0aW9ucy4KKyAgICAgICAgICBUaGVzZSBhbGxvd3MgdXMgdG8gc2F2ZSB0
aGUgZXhpc3Rpbmcgb3B0aW9uIHZhbHVlcywgbW9kaWZ5IHRoZW0gZm9yIHRlc3RpbmcsCisgICAg
ICAgICAgYW5kIHRoZW4gcmVzdG9yaW5nIHRoZSBzYXZlZCBvcHRpb24gdmFsdWVzLgorICAgICAg
ICAgIE5vdGU6IHdoaWxlIHRoZXNlIEFQSXMgYWxsb3cgdXMgdG8gc2V0IHRoZSBvcHRpb25zIGF0
IHJ1bnRpbWUsIHRoZXkgZG8gbm90CisgICAgICAgICAgZ3VhcmFudGVlIHRoYXQgYWxsIG9wdGlv
bnMgd2lsbCB0YWtlIGVmZmVjdCAKKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAg
ICAtIEVtcGxveSB0aGUgbmV3IG9wdGlvbnMgZ2V0L3NldCBBUElzIHRvIHJ1biB3YXRjaGRvZyB0
ZXN0cyBmb3IgZWFjaCBvZiB0aGUKKyAgICAgICAgICBleGVjdXRpb24gZW5naW5lIHRpZXJzLgor
ICAgICAgICAtIEFsc28gYWx0ZXJlZCB0aGUgdGVzdCBzY3JpcHRzIHRvIGJlIGluIGEgZnVuY3Rp
b24gaW5zdGVhZCBvZiBnbG9iYWwgY29kZS4KKyAgICAgICAgICBUaGlzIGlzIG9uZSBvZiAyIGNo
YW5nZXMgbmVlZGVkIHRvIGdpdmUgdGhlbSBhbiBvcHBvcnR1bml0eSB0byBiZSBGVEwgY29tcGls
ZWQuCisgICAgICAgICAgVGhlIG90aGVyIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBjb21waWxpbmcg
Q2hlY2tXYXRjaGRvZ1RpbWVyIGluIHRoZSBGVEwgKHdoaWNoCisgICAgICAgICAgd2lsbCBiZSBh
ZGRyZXNzZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaCkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50
aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRo
ZSBhYmlsaXR5IHRvIGNsZWFyIGEgc3RyaW5nIG9wdGlvbiB3aXRoIGEgbnVsbHB0ciB2YWx1ZS4K
KyAgICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byByZXN0b3JlIGEgZGVmYXVsdCBzdHJpbmcgb3B0
aW9uIHZhbHVlIHdoaWNoIG1heSBiZSBudWxsLgorCisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdl
Ojppbml0KToKKyAgICAgICAgLSBBZGQgdGhlIGFiaWxpdHkgdG8gY2xlYXIgYSByYW5nZSBvcHRp
b24gd2l0aCBhIG51bGwgdmFsdWUuCisgICAgICAgICAgVGhpcyBpcyBuZWVkZWQgdG8gcmVzdG9y
ZSBhIGRlZmF1bHQgcmFuZ2Ugb3B0aW9uIHZhbHVlIHdoaWNoIG1heSBiZSBudWxsLgorCisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpk
dW1wT3B0aW9uc0lmTmVlZGVkKToKKyAgICAgICAgLSBGYWN0b3IgY29kZSB0byBkdW1wIG9wdGlv
bnMgb3V0IHRvIGR1bXBPcHRpb25zSWZOZWVkZWQoKSBzaW5jZSB3ZSB3aWxsIG5lZWQKKyAgICAg
ICAgICB0aGF0IGxvZ2ljIGVsc2V3aGVyZS4KKworICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRP
cHRpb25zKToKKyAgICAgICAgLSBQYXJzZSBhbiBvcHRpb25zIHN0cmluZyBhbmQgc2V0IGVhY2gg
b2YgdGhlIHNwZWNpZmllZCBvcHRpb25zLgorCisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9w
dGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKToKKyAgICAgICAgKEpTQzo6T3B0
aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmVuc3VyZU9wdGlvbnNB
cmVDb2hlcmVudCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpv
cGVyYXRvciE9KToKKwogMjAxNS0wOC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBjb25zdCB0byBjb250ZW50IGV4dGVuc2lvbiBw
YXJzZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODg1NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw3ICsxNTUw
LDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZwogICAgICAgICBt
X2FyZ3VtZW50cy5hcHBlbmQoYXJndltpXSk7CiAKICAgICBpZiAobmVlZFRvRHVtcE9wdGlvbnMp
Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoSlNDOjpPcHRpb25zOjpEdW1w
TGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiLCBzdGRlcnIpOworICAg
ICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKHN0ZGVyciwgSlNDOjpPcHRpb25zOjpE
dW1wTGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiKTsKICAgICBKU0M6
Ok9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogICAgIGlmIChuZWVkVG9FeGl0
KQogICAgICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09wdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNPcHRpb25zUHJpdmF0
ZS5oIgorCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCitjb25zdCBjaGFyKiBKU0dldE9wdGlvbnMoKQoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoYnVpbGRlcik7Cisg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gZmFzdFN0
ckR1cChyZXN1bHQuYXNjaWkoKS5kYXRhKCkpOworfQorCit2b2lkIEpTU2V0T3B0aW9uKGNvbnN0
IGNoYXIqIG9wdGlvbnMpCit7CisgICAgT3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zKTsKK30K
Kwordm9pZCBKU1JlbGVhc2VPcHRpb25zKGNvbnN0IGNoYXIqIHNhdmVkT3B0aW9ucykKK3sKKyAg
ICBmYXN0RnJlZShjb25zdF9jYXN0PGNoYXIqPihzYXZlZE9wdGlvbnMpKTsKK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPcHRpb25zUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPcHRpb25zUHJpdmF0ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09wdGlvbnNQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNPcHRpb25z
UHJpdmF0ZV9oCisjZGVmaW5lIEpTT3B0aW9uc1ByaXZhdGVfaAorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKyAgICAKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCBHZXRzIHRoZSBKU0Mgb3B0
aW9ucyBpbiBhIHN0cmluZy4KKyBAcmVzdWx0IEEgcG9pbnRlciB0byBhIHN0cmluZyBvZiBvcHRp
b25zLgorIEBkaXNjdXNzaW9uIFdoZW4gZG9uZSwgdGhlIHVzZXIgbXVzdCBjYWxsIEpTUmVsZWFz
ZU9wdGlvbnMgdG8gcmVsZWFzZSB0aGUgZ290dGVuIG9wdGlvbnMgc3RyaW5nLgorICovCitKU19F
WFBPUlQgY29uc3QgY2hhciogSlNHZXRPcHRpb25zKCk7CisKKy8qIQorIEBmdW5jdGlvbgorIEBh
YnN0cmFjdCBTZXRzIG9wdGlvbnMgc3BlY2lmaWVkIGluIHRoZSBvcHRpb25zIHN0cmluZy4KKyBA
cGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdpbGwgYmUgYXBwbGllZC4KKyAqLworSlNf
RVhQT1JUIHZvaWQgSlNTZXRPcHRpb24oY29uc3QgY2hhciogb3B0aW9ucyk7CisKKy8qIQorIEBm
dW5jdGlvbgorIEBhYnN0cmFjdCBSZWxlYXNlcyB0aGUgcHJldmlvdXNseSBzYXZlZCBKU09wdGlv
bnMuCisgQHBhcmFtIHNhdmVkT3B0aW9ucyBUaGUgcHJldmlvdXNseSBzYXZlZCBKU09wdGlvbnMu
CisgKi8KK0pTX0VYUE9SVCB2b2lkIEpTUmVsZWFzZU9wdGlvbnMoY29uc3QgY2hhciogc2F2ZWRP
cHRpb25zKTsKKyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
LyBKU09wdGlvbnNQcml2YXRlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkocmV2aXNpb24g
MTg4NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCIKIAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZh
dGUuaCIKKyNpbmNsdWRlICJKU09wdGlvbnNQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlw
dENvcmUuaCIKICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC03OCw2ICs3OSwxMCBAQCBzdGF0aWMgYm9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhK
U0NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0cnVjdCBUaWVyT3B0aW9ucyB7CisgICAgY29u
c3QgY2hhciogdGllcjsKKyAgICBjb25zdCBjaGFyKiBvcHRpb25zU3RyOworfTsKIAogaW50IHRl
c3RFeGVjdXRpb25UaW1lTGltaXQoKQogewpAQCAtOTcsMzYgKzEwMiw1MSBAQCBpbnQgdGVzdEV4
ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgSlNTdHJpbmdSZWxlYXNlKGN1cnJlbnRDUFVUaW1lU3Ry
KTsKICAgICAKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0OiAqLwotICAgIEpTQ29udGV4dEdy
b3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgLjEwZiwgc2hvdWxkVGVybWlu
YXRlQ2FsbGJhY2ssIDApOwotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJT
Y3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7
IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gIjsKLSAg
ICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
bG9vcEZvcmV2ZXJTY3JpcHQpOwotICAgICAgICBleGNlcHRpb24gPSBudWxscHRyOwotICAgICAg
ICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwotICAgICAgICBhdXRv
IHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAgIHYgPSBKU0V2YWx1YXRlU2Ny
aXB0KGNvbnRleHQsIHNjcmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwgMSwgJmV4Y2VwdGlvbik7Ci0g
ICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSAmJiBzaG91
bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKLSAgICAgICAgICAgIHByaW50ZigiUEFTUzog
c2NyaXB0IHRpbWVkIG91dCBhcyBleHBlY3RlZC5cbiIpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSkK
LSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFz
IGV4cGVjdGVkLlxuIik7Ci0gICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
V2FzQ2FsbGVkKQotICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQg
Y2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQuXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0
aHJvd24uXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
IFRpZXJPcHRpb25zIHRpZXJPcHRpb25zTGlzdFtdID0geworICAgICAgICB7ICJMTElOVCIsICAg
ICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCisgICAgICAgIHsgIkJhc2VsaW5l
IiwgIi0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAor
ICAgICAgICB7ICJERkciLCAgICAgICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVz
ZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAorICAgICAgICB7ICJGVEwiLCAgICAg
ICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRM
SklUPXRydWUiIH0sCisgICAgfTsKKworICAgIGZvciAoYXV0byB0aWVyT3B0aW9ucyA6IHRpZXJP
cHRpb25zTGlzdCkgeworICAgICAgICBjb25zdCBjaGFyKiBzYXZlZE9wdGlvbnMgPSBKU0dldE9w
dGlvbnMoKTsKKyAgICAgICAgSlNTZXRPcHRpb24odGllck9wdGlvbnMub3B0aW9uc1N0cik7CisK
KyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3Vw
LCAuMTBmLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gImZ1bmN0aW9uIGZvbygpIHsgdmFy
IHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50
Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBmb28oKTsiOworICAgICAg
ICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
bG9vcEZvcmV2ZXJTY3JpcHQpOworICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAg
ICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICB2
ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEs
ICZleGNlcHRpb24pOworICAgICAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0VGltZSkg
PCBtaWxsaXNlY29uZHMoMTUwKSkgJiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQp
CisgICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZWQgb3V0IGFzIGV4
cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoISgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHMoMTUw
KSkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IGRpZCBub3Qg
dGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1lb3V0IGNhbGxiYWNrIHdhcyBub3Qg
Y2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFleGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CisK
KyAgICAgICAgSlNTZXRPcHRpb24oc2F2ZWRPcHRpb25zKTsKKyAgICAgICAgSlNSZWxlYXNlT3B0
aW9ucyhzYXZlZE9wdGlvbnMpOwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHRoZSBzY3JpcHQg
dGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRj
aGFibGU6ICovCiAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4
dEdyb3VwLCAwLjEwZiwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAgIHsKLSAgICAg
ICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJl
bnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0g
c3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0iOworICAgICAgICBjb25z
dCBjaGFyKiBsb29wRm9yZXZlclNjcmlwdCA9ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRp
bWUgPSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQ
VVRpbWUoKSAtIHN0YXJ0VGltZSA+IC4xNTApIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9IH0gZm9v
KCk7IjsKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcobG9vcEZvcmV2ZXJTY3JpcHQpOwogICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwpAQCAt
MTUzLDcgKzE3Myw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAvKiBUZXN0
IHNjcmlwdCB0aW1lb3V0IHdpdGggbm8gY2FsbGJhY2s6ICovCiAgICAgSlNDb250ZXh0R3JvdXBT
ZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCAwLCAwKTsKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gInZhciBzdGFydFRpbWUgPSBj
dXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0
YXJ0VGltZSA+IC4xNTApIGJyZWFrOyB9ICI7CisgICAgICAgIGNvbnN0IGNoYXIqIGxvb3BGb3Jl
dmVyU2NyaXB0ID0gImZ1bmN0aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVU
aW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4g
LjE1MCkgYnJlYWs7IH0gfSBmb28oKTsiOwogICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29wRm9yZXZlclNjcmlwdCk7CiAgICAgICAg
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gY3VycmVudENQ
VVRpbWUoKTsKQEAgLTE3Nyw3ICsxOTcsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCBjYW5jZWxsYXRpb246ICovCiAgICAgSlNDb250
ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAwLjEwZiwgY2FuY2Vs
VGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZv
cmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0
cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0g
IjsKKyAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAiZnVuY3Rpb24gZm9v
KCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYg
KGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSB9IGZvbygpOyI7
CiAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAg
ICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOwpAQCAtMjAzLDcgKzIyMyw3
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1l
b3V0IGV4dGVuc2lvbjogKi8KICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1p
dChjb250ZXh0R3JvdXAsIDAuMTAwZiwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAg
IHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGlt
ZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgp
IC0gc3RhcnRUaW1lID4gLjUwMCkgYnJlYWs7IH0gIjsKKyAgICAgICAgY29uc3QgY2hhciogbG9v
cEZvcmV2ZXJTY3JpcHQgPSAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAuNTAwKSBicmVhazsgfSB9IGZvbygpOyI7CiAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlw
dCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJy
ZW50Q1BVVGltZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxODg1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYs
NiArMjk2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXEFQSVxKU0NvbnRleHRSZWYu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTQ1Rlc3RSdW5uZXJVdGls
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNPYmplY3RSZWYuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTT3B0aW9ucy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNTY3JpcHRSZWYuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTU3RyaW5nUmVmLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXEFQSVxKU1N0cmluZ1JlZkJTVFIuY3BwIiAvPgpAQCAtOTUyLDYgKzk1
Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNFeHBvcnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU09iamVjdFJlZi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTT2JqZWN0UmVmUHJpdmF0ZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTT3B0aW9uc1ByaXZhdGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEFQSVxKU1JldGFpblB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEpTU2NyaXB0UmVmUHJpdmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEpTU3RyaW5nUmVmLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODg1NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTT2JqZWN0UmVmLmNwcCI+CiAgICAgICA8Rmls
dGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cQVBJXEpTT3B0aW9ucy5jcHAiPgorICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXEFQSVxKU1NjcmlwdFJl
Zi5jcHAiPgogICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTE4OTgsNiArMTkwMSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNPYmpl
Y3RSZWZQcml2YXRlLmgiPgogICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU09wdGlvbnNQcml2YXRlLmgi
PgorICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU1JldGFpblB0ci5oIj4KICAgICAgIDxGaWx0ZXI+QVBJ
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTg4NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTQs
MTMgKzE2OTQsMTMgQEAKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYz
N0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2MjJC
MUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyog
Q29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5jcHAgKi87IH07CisJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQjFC
NzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCAqLzsgfTsKIAkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOUY1
NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKLQkJRTM1RTAzNUYx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsK
LQkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4
ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwICovOyB9OwpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlE
QUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRT
b3VyY2VEdW1wLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50
cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJ
RkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFNUYxMURGMUI4MzFBRDkwMDgyMzgwOCAvKiBKU09wdGlvbnNQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTVGMTFE
RTFCODMxQUMzMDA4MjM4MDggLyogSlNPcHRpb25zUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNUYxMUUwMUI4MzFBRTAwMDgyMzgw
OCAvKiBKU09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU1RjExREQxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9ucy5jcHAgKi87IH07
CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFN0JBNjEwMUExQTdDRUMwMEYx
RjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYy
MDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFr
cG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzUyNCwxNiArMzUyNiwxNiBAQAogCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2
MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzQjNFMjUx
QjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1RTAzNjExQjdB
QjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNv
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlUmVjb3JkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU5Miw2ICszNTk0LDggQEAK
IAkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkzMkE2
MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFNUYxMUREMUI4MzFBQzMwMDgyMzgwOCAvKiBKU09wdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU1RjExREUxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9uc1ByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPcHRpb25zUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhl
YXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFN0JBNjBFMUEx
QTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQyNTcsNiArNDI2MSw4IEBACiAJCQkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpT
T2JqZWN0UmVmLmNwcCAqLywKIAkJCQkxNDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmpl
Y3RSZWYuaCAqLywKIAkJCQlBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQ
cml2YXRlLmggKi8sCisJCQkJRkU1RjExREQxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9ucy5j
cHAgKi8sCisJCQkJRkU1RjExREUxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9uc1ByaXZhdGUu
aCAqLywKIAkJCQk5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyogSlNQcm9maWxlclByaXZhdGUu
Y3BwICovLAogCQkJCTk1MkM2M0FDMEU0Nzc3RDYwMEMxMzkzNiAvKiBKU1Byb2ZpbGVyUHJpdmF0
ZS5oICovLAogCQkJCTk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAvKiBKU1JldGFpblB0ci5oICov
LApAQCAtNjIyNyw2ICs2MjMzLDcgQEAKIAkJCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyog
R2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQ0MTdFQTlGNTkwMEFC
QjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzNDEzNEZGMEE2MDBB
RkFEQjUgLyogSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTVGMTFERjFCODMxQUQ5MDA4
MjM4MDggLyogSlNPcHRpb25zUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5MDAx
NkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjgz
MTkwMjE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzYwOCw2ICs3NjE1LDcgQEAKIAkJCQkxNDdGMzlEMTEwN0VDMzc2MDA0MjdB
NDggLyogSlNDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQy
N0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGQ0U0MEE1MUU0
NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFNUYxMUUw
MUI4MzFBRTAwMDgyMzgwOCAvKiBKU09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
M0M2MTYxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHJldmlzaW9uIDE4ODU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiAjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAjaW5jbHVkZSA8
c3lzL3N5c2N0bC5oPgpAQCAtODQsNiArODUsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBj
aGFyKiBzdHJpbmcsIE9wCiAKIHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
Y29uc3QgY2hhciomIHZhbHVlKQogeworICAgIGlmICghc3RybGVuKHN0cmluZykpCisgICAgICAg
IHN0cmluZyA9IG51bGxwdHI7CiAgICAgdmFsdWUgPSBzdHJpbmc7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNDksNiArMTUyLDggQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdD
TWFya2VycwogI2VuZGlmCiB9CiAKK2NvbnN0IGNoYXIqIGNvbnN0IE9wdGlvblJhbmdlOjpzX251
bGxSYW5nZVN0ciA9ICI8bnVsbD4iOworCiBib29sIE9wdGlvblJhbmdlOjppbml0KGNvbnN0IGNo
YXIqIHJhbmdlU3RyaW5nKQogewogICAgIC8vIHJhbmdlU3RyaW5nIHNob3VsZCBiZSBpbiB0aGUg
Zm9ybSBvZiBbIV08bG93Pls6PGhpZ2g+XQpAQCAtMTU2LDE0ICsxNjEsMTYgQEAgYm9vbCBPcHRp
b25SYW5nZTo6aW5pdChjb25zdCBjaGFyKiByYW5nZQogCiAgICAgYm9vbCBpbnZlcnQgPSBmYWxz
ZTsKIAotICAgIGlmIChtX3N0YXRlID4gVW5pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICBpZiAoIXJhbmdlU3RyaW5nKSB7CiAgICAgICAgIG1fc3RhdGUgPSBJbml0RXJy
b3I7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIXN0cmNtcChyYW5n
ZVN0cmluZywgc19udWxsUmFuZ2VTdHIpKSB7CisgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxp
emVkOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgbV9yYW5nZVN0cmlu
ZyA9IHJhbmdlU3RyaW5nOwogCiAgICAgaWYgKCpyYW5nZVN0cmluZyA9PSAnIScpIHsKQEAgLTM2
MCwzMiArMzY3LDEwMiBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAg
QVNTRVJUKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSBPcHRp
b25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7CiAgICAgICAgICAgICBBU1NFUlQoT3B0
aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpID49IDApOwogCi0gICAgICAg
ICAgICBpZiAoT3B0aW9uczo6c2hvd09wdGlvbnMoKSkgewotICAgICAgICAgICAgICAgIER1bXBM
ZXZlbCBsZXZlbCA9IHN0YXRpY19jYXN0PER1bXBMZXZlbD4oT3B0aW9uczo6c2hvd09wdGlvbnMo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQotICAg
ICAgICAgICAgICAgICAgICBsZXZlbCA9IER1bXBMZXZlbDo6VmVyYm9zZTsKLQotICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBzd2l0
Y2ggKGxldmVsKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEdW1wTGV2ZWw6Ok5vbmU6Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpP
dmVycmlkZGVuOgotICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICJPdmVycmlkZGVuIEpTQyBv
cHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgRHVtcExldmVsOjpBbGw6Ci0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mg
b3B0aW9uczoiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIER1bXBMZXZlbDo6VmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiQWxs
IEpTQyBvcHRpb25zIHdpdGggZGVzY3JpcHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkdW1wQWxsT3B0aW9ucyhs
ZXZlbCwgdGl0bGUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBkdW1wT3B0aW9uc0lm
TmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKICAgICAg
ICAgfSk7CiB9CiAKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbnNJZk5lZWRlZCgpCit7CisgICAg
aWYgKE9wdGlvbnM6OnNob3dPcHRpb25zKCkpIHsKKyAgICAgICAgRHVtcExldmVsIGxldmVsID0g
c3RhdGljX2Nhc3Q8RHVtcExldmVsPihPcHRpb25zOjpzaG93T3B0aW9ucygpKTsKKyAgICAgICAg
aWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQorICAgICAgICAgICAgbGV2ZWwgPSBEdW1w
TGV2ZWw6OlZlcmJvc2U7CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgY2hhciogdGl0bGUg
PSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKGxldmVsKSB7CisgICAgICAgICAgICBjYXNlIER1
bXBMZXZlbDo6Tm9uZToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
RHVtcExldmVsOjpPdmVycmlkZGVuOgorICAgICAgICAgICAgICAgIHRpdGxlID0gIk92ZXJyaWRk
ZW4gSlNDIG9wdGlvbnM6IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRHVtcExldmVsOjpBbGw6CisgICAgICAgICAgICAgICAgdGl0bGUgPSAiQWxsIEpTQyBvcHRp
b25zOiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIER1bXBMZXZl
bDo6VmVyYm9zZToKKyAgICAgICAgICAgICAgICB0aXRsZSA9ICJBbGwgSlNDIG9wdGlvbnMgd2l0
aCBkZXNjcmlwdGlvbnM6IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgZHVtcEFsbE9wdGlvbnMoYnVp
bGRlciwgbGV2ZWwsIHRpdGxlLCBudWxscHRyLCAiICAgIiwgIlxuIiwgU2hvd0RlZmF1bHRzKTsK
KyAgICAgICAgZGF0YUxvZyhidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIH0KK30KKworYm9vbCBP
cHRpb25zOjpzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdGlvbnNTdHIpCit7CisgICAgVmVjdG9y
PGNoYXIqPiBvcHRpb25zOworCisgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihvcHRpb25zU3Ry
KTsKKyAgICBjaGFyKiBvcHRpb25zU3RyQ29weSA9IFdURjo6ZmFzdFN0ckR1cChvcHRpb25zU3Ry
KTsKKyAgICBjaGFyKiBlbmQgPSBvcHRpb25zU3RyQ29weSArIGxlbmd0aDsKKyAgICBjaGFyKiBw
ID0gb3B0aW9uc1N0ckNvcHk7CisKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICBjaGFy
KiBvcHRpb25TdGFydCA9IHA7CisgICAgICAgIHAgPSBzdHJzdHIocCwgIj0iKTsKKyAgICAgICAg
aWYgKCFwKSB7CisgICAgICAgICAgICBkYXRhTG9nRigiJz0nIG5vdCBmb3VuZCBpbiBvcHRpb24g
c3RyaW5nOiAlcFxuIiwgb3B0aW9uU3RhcnQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHArKzsKKworICAgICAgICBjaGFyKiB2YWx1ZUJlZ2luID0gcDsK
KyAgICAgICAgYm9vbCBoYXNTdHJpbmdWYWx1ZSA9IGZhbHNlOworICAgICAgICBjb25zdCBpbnQg
bWluU3RyaW5nTGVuZ3RoID0gMjsgLy8gVGhlIG1pbiBpcyBhbiBlbXB0eSBzdHJpbmcgaS5lLiAy
IGRvdWJsZSBxdW90ZXMuCisgICAgICAgIGlmICgocCArIG1pblN0cmluZ0xlbmd0aCA8IGVuZCkg
JiYgKCpwID09ICciJykpIHsKKyAgICAgICAgICAgIHAgPSBzdHJzdHIocCArIDEsICJcIiIpOwor
ICAgICAgICAgICAgaWYgKCFwKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIk1pc3Npbmcg
dHJhaWxpbmcgJ1wiJyBpbiBvcHRpb24gc3RyaW5nOiAlcFxuIiwgb3B0aW9uU3RhcnQpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRW5kIG9mIHN0cmluZyBub3QgZm91bmQuCisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBoYXNTdHJpbmdWYWx1ZSA9IHRydWU7CisgICAgICAg
IH0KKworICAgICAgICBwID0gc3Ryc3RyKHAsICIgIik7CisgICAgICAgIGlmICghcCkKKyAgICAg
ICAgICAgIHAgPSBlbmQ7IC8vIE5vIG1vcmUgIiAiIHNlcGFyYXRvci4gSGVuY2UsIHRoaXMgaXMg
dGhlIGxhc3QgYXJnLgorCisgICAgICAgIC8vIElmIHdlIGhhdmUgYSB3ZWxsLWZvcm1lZCBzdHJp
bmcgdmFsdWUsIHN0cmlwIHRoZSBxdW90ZXMuCisgICAgICAgIGlmIChoYXNTdHJpbmdWYWx1ZSkg
eworICAgICAgICAgICAgY2hhciogdmFsdWVFbmQgPSBwOworICAgICAgICAgICAgQVNTRVJUKCgq
dmFsdWVCZWdpbiA9PSAnIicpICYmICgodmFsdWVFbmQgLSB2YWx1ZUJlZ2luKSA+PSBtaW5TdHJp
bmdMZW5ndGgpICYmICh2YWx1ZUVuZFstMV0gPT0gJyInKSk7CisgICAgICAgICAgICBtZW1tb3Zl
KHZhbHVlQmVnaW4sIHZhbHVlQmVnaW4gKyAxLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4gLSBtaW5T
dHJpbmdMZW5ndGgpOworICAgICAgICAgICAgdmFsdWVFbmRbLW1pblN0cmluZ0xlbmd0aF0gPSAn
XDAnOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RyaXAgbGVhZGluZyAtLSBpZiBwcmVzZW50
LgorICAgICAgICBpZiAoKHAgLSAgb3B0aW9uU3RhcnQgPiAyKSAmJiBvcHRpb25TdGFydFswXSA9
PSAnLScgJiYgb3B0aW9uU3RhcnRbMV0gPT0gJy0nKQorICAgICAgICAgICAgb3B0aW9uU3RhcnQg
Kz0gMjsKKworICAgICAgICAqcCsrID0gJ1wwJzsKKyAgICAgICAgb3B0aW9ucy5hcHBlbmQob3B0
aW9uU3RhcnQpOworICAgIH0KKworICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgZm9yIChh
dXRvJiBvcHRpb24gOiBvcHRpb25zKSB7CisgICAgICAgIGJvb2wgb3B0aW9uU3VjY2VzcyA9IHNl
dE9wdGlvbihvcHRpb24pOworICAgICAgICBpZiAoIW9wdGlvblN1Y2Nlc3MpIHsKKyAgICAgICAg
ICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gc2V0IG9wdGlvbiA6ICVzXG4iLCBvcHRpb24pOworICAg
ICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgZHVtcE9w
dGlvbnNJZk5lZWRlZCgpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCiAvLyBQYXJzZXMgYSBz
aW5nbGUgY29tbWFuZCBsaW5lIG9wdGlvbiBpbiB0aGUgZm9ybWF0ICI8b3B0aW9uTmFtZT49PHZh
bHVlPiIKIC8vIChubyBzcGFjZXMgYWxsb3dlZCkgYW5kIHNldCB0aGUgc3BlY2lmaWVkIG9wdGlv
biBpZiBhcHByb3ByaWF0ZS4KIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uKGNvbnN0IGNoYXIqIGFy
ZykKQEAgLTQyMCwxNSArNDk3LDM1IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uKGNvbnN0IGNo
YXIqIGFyZykKICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIG9wdGlvbiBtYXRjaGVkLgogfQogCi12
b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKER1bXBMZXZlbCBsZXZlbCwgY29uc3QgY2hhciog
dGl0bGUsIEZJTEUqIHN0cmVhbSkKK3ZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVsIGxldmVsLCBjb25zdCBjaGFyKiB0aXRsZSwKKyAg
ICBjb25zdCBjaGFyKiBzZXBhcmF0b3IsIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRlciwgY29uc3Qg
Y2hhciogb3B0aW9uRm9vdGVyLCBTaG93RGVmYXVsdHNPcHRpb24gc2hvd0RlZmF1bHRzT3B0aW9u
KQoreworICAgIGlmICh0aXRsZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCh0aXRsZSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIH0KKworICAgIGZvciAoaW50IGlkID0g
MDsgaWQgPCBudW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKKyAgICAgICAgaWYgKHNlcGFyYXRvciAm
JiBpZCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlcGFyYXRvcik7CisgICAgICAgIGR1
bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PE9wdGlvbklEPihpZCksIG9wdGlv
bkhlYWRlciwgb3B0aW9uRm9vdGVyLCBzaG93RGVmYXVsdHNPcHRpb24pOworICAgIH0KK30KKwor
dm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoU3RyaW5nQnVpbGRlciYgYnVpbGRl
cikKIHsKLSAgICBpZiAodGl0bGUpCi0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXNcbiIsIHRp
dGxlKTsKLSAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKQot
ICAgICAgICBkdW1wT3B0aW9uKGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBzdHJl
YW0sICIgICAiLCAiXG4iKTsKKyAgICBkdW1wQWxsT3B0aW9ucyhidWlsZGVyLCBEdW1wTGV2ZWw6
OkFsbCwgbnVsbHB0ciwgIiAiLCBudWxscHRyLCBudWxscHRyLCBEb250U2hvd0RlZmF1bHRzKTsK
IH0KIAotdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uSUQg
aWQsIEZJTEUqIHN0cmVhbSwgY29uc3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIp
Cit2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKEZJTEUqIHN0cmVhbSwgRHVtcExldmVsIGxl
dmVsLCBjb25zdCBjaGFyKiB0aXRsZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgZHVtcEFsbE9wdGlvbnMoYnVpbGRlciwgbGV2ZWwsIHRpdGxlLCBudWxscHRyLCAiICAgIiwg
IlxuIiwgU2hvd0RlZmF1bHRzKTsKKyAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgYnVpbGRlci50
b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKK30KKwordm9pZCBPcHRpb25zOjpkdW1wT3B0aW9u
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uSUQgaWQsCisg
ICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIsIFNob3dEZWZhdWx0c09w
dGlvbiBzaG93RGVmYXVsdHNPcHRpb24pCiB7CiAgICAgaWYgKGlkID49IG51bWJlck9mT3B0aW9u
cykKICAgICAgICAgcmV0dXJuOyAvLyBJbGxlZ2FsIG9wdGlvbi4KQEAgLTQ0MCwxOSArNTM3LDI0
IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihEdW1wTGV2ZWwgbGV2ZWwKICAgICBpZiAobGV2
ZWwgPT0gRHVtcExldmVsOjpPdmVycmlkZGVuICYmICF3YXNPdmVycmlkZGVuKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmcHJpbnRmKHN0cmVhbSwgIiVzJXM6ICIsIGhlYWRlciwgb3B0aW9uLm5h
bWUoKSk7Ci0gICAgb3B0aW9uLmR1bXAoc3RyZWFtKTsKKyAgICBpZiAoaGVhZGVyKQorICAgICAg
ICBidWlsZGVyLmFwcGVuZChoZWFkZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG9wdGlvbi5uYW1l
KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc9Jyk7CisgICAgb3B0aW9uLmR1bXAoYnVpbGRlcik7
CiAKLSAgICBpZiAod2FzT3ZlcnJpZGRlbikgewotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiAo
ZGVmYXVsdDogIik7Ci0gICAgICAgIG9wdGlvbi5kZWZhdWx0T3B0aW9uKCkuZHVtcChzdHJlYW0p
OwotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIikiKTsKKyAgICBpZiAod2FzT3ZlcnJpZGRlbiAm
JiAoc2hvd0RlZmF1bHRzT3B0aW9uID09IFNob3dEZWZhdWx0cykpIHsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAoZGVmYXVsdDogIik7CisgICAgICAgIG9wdGlvbi5kZWZhdWx0T3B0aW9uKCku
ZHVtcChidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIikiKTsKICAgICB9CiAKLSAg
ICBpZiAobmVlZHNEZXNjcmlwdGlvbikKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIgICAuLi4g
JXMiLCBvcHRpb24uZGVzY3JpcHRpb24oKSk7CisgICAgaWYgKG5lZWRzRGVzY3JpcHRpb24pIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAgIC4uLiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQob3B0aW9uLmRlc2NyaXB0aW9uKCkpOworICAgIH0KIAotICAgIGZwcmludGYoc3RyZWFtLCAi
JXMiLCBmb290ZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGZvb3Rlcik7CiB9CiAKIHZvaWQgT3B0
aW9uczo6ZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCkKQEAgLTQ2NiwzMyArNTY4LDM1IEBAIHZv
aWQgT3B0aW9uczo6ZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCkKICAgICAgICAgQ1JBU0goKTsK
IH0KIAotdm9pZCBPcHRpb246OmR1bXAoRklMRSogc3RyZWFtKSBjb25zdAordm9pZCBPcHRpb246
OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUo
KSkgewogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Ym9vbFR5cGU6Ci0gICAgICAgIGZwcmludGYo
c3RyZWFtLCAiJXMiLCBtX2VudHJ5LmJvb2xWYWwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS5ib29sVmFsID8gInRydWUiIDogImZhbHNlIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6dW5zaWduZWRUeXBlOgotICAg
ICAgICBmcHJpbnRmKHN0cmVhbSwgIiV1IiwgbV9lbnRyeS51bnNpZ25lZFZhbCk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudW5zaWduZWRWYWwpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmRvdWJsZVR5cGU6Ci0gICAgICAgIGZwcmludGYo
c3RyZWFtLCAiJWxmIiwgbV9lbnRyeS5kb3VibGVWYWwpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihtX2VudHJ5LmRvdWJsZVZhbCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6aW50MzJUeXBlOgotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVkIiwgbV9l
bnRyeS5pbnQzMlZhbCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkuaW50
MzJWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Om9wdGlvblJh
bmdlVHlwZToKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIG1fZW50cnkub3B0aW9uUmFu
Z2VWYWwucmFuZ2VTdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkub3B0
aW9uUmFuZ2VWYWwucmFuZ2VTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6b3B0aW9uU3RyaW5nVHlwZTogewogICAgICAgICBjb25zdCBjaGFyKiBvcHRp
b24gPSBtX2VudHJ5Lm9wdGlvblN0cmluZ1ZhbDsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAg
ICAgICAgICBvcHRpb24gPSAiIjsKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIG9wdGlv
bik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG9wdGlvbik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmdjTG9nTGV2ZWxUeXBlOiB7Ci0gICAgICAg
IGZwcmludGYoc3RyZWFtLCAiJXMiLCBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV9lbnRyeS5n
Y0xvZ0xldmVsVmFsKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxB
c1N0cmluZyhtX2VudHJ5LmdjTG9nTGV2ZWxWYWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlz
aW9uIDE4ODU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgU3RyaW5nQnVpbGRlcjsKK30KK3VzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwpAQCAtODAsMTEg
Kzg1LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7CiAgICAgYm9v
bCBpc0luUmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6ICI8bnVs
bD4iOyB9CisgICAgY29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9z
dGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KICAg
ICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAKIHByaXZhdGU6Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOworCiAgICAgUmFuZ2VT
dGF0ZSBtX3N0YXRlOwogICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7CiAgICAgdW5zaWdu
ZWQgbV9sb3dMaW1pdDsKQEAgLTM1OSwxMSArMzY2LDE3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAorICAgIC8vIFBhcnNlcyBh
IHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0t
PG9wdGlvbk5hbWU+PTx2YWx1ZT4iCisgICAgLy8gYW5kIGFyZSBzZXBhcmF0ZWQgYnkgYSBzcGFj
ZS4gVGhlIGxlYWRpbmcgIi0tIiBpcyBvcHRpb25hbCBhbmQgd2lsbCBiZSBpZ25vcmVkLgorICAg
IHN0YXRpYyBib29sIHNldE9wdGlvbnMoY29uc3QgY2hhciogb3B0aW9uc0xpc3QpOworCiAgICAg
Ly8gUGFyc2VzIGEgc2luZ2xlIGNvbW1hbmQgbGluZSBvcHRpb24gaW4gdGhlIGZvcm1hdCAiPG9w
dGlvbk5hbWU+PTx2YWx1ZT4iCiAgICAgLy8gKG5vIHNwYWNlcyBhbGxvd2VkKSBhbmQgc2V0IHRo
ZSBzcGVjaWZpZWQgb3B0aW9uIGlmIGFwcHJvcHJpYXRlLgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHNldE9wdGlvbihjb25zdCBjaGFyKiBhcmcpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25zKER1bXBMZXZlbCwgY29uc3QgY2hhciog
dGl0bGUgPSBudWxscHRyLCBGSUxFKiBzdHJlYW0gPSBzdGRvdXQpOwotICAgIHN0YXRpYyB2b2lk
IGR1bXBPcHRpb24oRHVtcExldmVsLCBPcHRpb25JRCwgRklMRSogc3RyZWFtID0gc3Rkb3V0LCBj
b25zdCBjaGFyKiBoZWFkZXIgPSAiIiwgY29uc3QgY2hhciogZm9vdGVyID0gIiIpOworCisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoRklMRSosIER1bXBM
ZXZlbCwgY29uc3QgY2hhciogdGl0bGUgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1w
QWxsT3B0aW9uc0luQUxpbmUoU3RyaW5nQnVpbGRlciYpOworCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCk7CiAKICAgICAvLyBEZWNs
YXJlIGFjY2Vzc29ycyBmb3IgZWFjaCBvcHRpb246CkBAIC0zOTUsNiArNDA4LDE2IEBAIHByaXZh
dGU6CiAKICAgICBPcHRpb25zKCk7CiAKKyAgICBlbnVtIFNob3dEZWZhdWx0c09wdGlvbiB7Cisg
ICAgICAgIERvbnRTaG93RGVmYXVsdHMsCisgICAgICAgIFNob3dEZWZhdWx0cworICAgIH07Cisg
ICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbnNJZk5lZWRlZCgpOworICAgIHN0YXRpYyB2b2lkIGR1
bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIq
IHRpdGxlLAorICAgICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IsIGNvbnN0IGNoYXIqIG9wdGlv
bkhlYWRlciwgY29uc3QgY2hhciogb3B0aW9uRm9vdGVyLCBTaG93RGVmYXVsdHNPcHRpb24pOwor
ICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCBsZXZl
bCwgT3B0aW9uSUQgaWQsCisgICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRlciwgY29uc3Qg
Y2hhciogb3B0aW9uRm9vdGVyLCBTaG93RGVmYXVsdHNPcHRpb24pOworCiAgICAgLy8gRGVjbGFy
ZSB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBvcHRpb25zIHN0b3JlOgogICAgIEpTX0VY
UE9SVERBVEEgc3RhdGljIEVudHJ5IHNfb3B0aW9uc1tudW1iZXJPZk9wdGlvbnNdOwogICAgIHN0
YXRpYyBFbnRyeSBzX2RlZmF1bHRPcHRpb25zW251bWJlck9mT3B0aW9uc107CkBAIC00MTEsNyAr
NDM0LDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUq
KSBjb25zdDsKKyAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OworCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259260</attachid>
            <date>2015-08-18 01:28:12 -0700</date>
            <delta_ts>2015-08-18 13:15:52 -0700</delta_ts>
            <desc>fix 2: fixed some style issues.</desc>
            <filename>bug-148125.patch</filename>
            <type>text/plain</type>
            <size>41277</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE1LTA4LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYWJpbGl0eSB0byBzYXZlIGFuZCByZXN0b3JlIEpTQyBvcHRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNPcHRpb25zLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0dldE9wdGlvbnMpOgorICAgICAgICAoSlNTZXRPcHRpb24pOgor
ICAgICAgICAoSlNSZWxlYXNlT3B0aW9ucyk6CisgICAgICAgICogQVBJL0pTT3B0aW9uc1ByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIC0gTmV3IHByaXZhdGUgQVBJcyBmb3IgZ2V0dGluZyBhbmQg
c2V0dGluZyBKU0Mgb3B0aW9ucy4KKyAgICAgICAgICBUaGVzZSBhbGxvd3MgdXMgdG8gc2F2ZSB0
aGUgZXhpc3Rpbmcgb3B0aW9uIHZhbHVlcywgbW9kaWZ5IHRoZW0gZm9yIHRlc3RpbmcsCisgICAg
ICAgICAgYW5kIHRoZW4gcmVzdG9yaW5nIHRoZSBzYXZlZCBvcHRpb24gdmFsdWVzLgorICAgICAg
ICAgIE5vdGU6IHdoaWxlIHRoZXNlIEFQSXMgYWxsb3cgdXMgdG8gc2V0IHRoZSBvcHRpb25zIGF0
IHJ1bnRpbWUsIHRoZXkgZG8gbm90CisgICAgICAgICAgZ3VhcmFudGVlIHRoYXQgYWxsIG9wdGlv
bnMgd2lsbCB0YWtlIGVmZmVjdCAKKworICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAg
ICAtIEVtcGxveSB0aGUgbmV3IG9wdGlvbnMgZ2V0L3NldCBBUElzIHRvIHJ1biB3YXRjaGRvZyB0
ZXN0cyBmb3IgZWFjaCBvZiB0aGUKKyAgICAgICAgICBleGVjdXRpb24gZW5naW5lIHRpZXJzLgor
ICAgICAgICAtIEFsc28gYWx0ZXJlZCB0aGUgdGVzdCBzY3JpcHRzIHRvIGJlIGluIGEgZnVuY3Rp
b24gaW5zdGVhZCBvZiBnbG9iYWwgY29kZS4KKyAgICAgICAgICBUaGlzIGlzIG9uZSBvZiAyIGNo
YW5nZXMgbmVlZGVkIHRvIGdpdmUgdGhlbSBhbiBvcHBvcnR1bml0eSB0byBiZSBGVEwgY29tcGls
ZWQuCisgICAgICAgICAgVGhlIG90aGVyIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBjb21waWxpbmcg
Q2hlY2tXYXRjaGRvZ1RpbWVyIGluIHRoZSBGVEwgKHdoaWNoCisgICAgICAgICAgd2lsbCBiZSBh
ZGRyZXNzZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaCkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50
aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRo
ZSBhYmlsaXR5IHRvIGNsZWFyIGEgc3RyaW5nIG9wdGlvbiB3aXRoIGEgbnVsbHB0ciB2YWx1ZS4K
KyAgICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byByZXN0b3JlIGEgZGVmYXVsdCBzdHJpbmcgb3B0
aW9uIHZhbHVlIHdoaWNoIG1heSBiZSBudWxsLgorCisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdl
Ojppbml0KToKKyAgICAgICAgLSBBZGQgdGhlIGFiaWxpdHkgdG8gY2xlYXIgYSByYW5nZSBvcHRp
b24gd2l0aCBhIG51bGwgdmFsdWUuCisgICAgICAgICAgVGhpcyBpcyBuZWVkZWQgdG8gcmVzdG9y
ZSBhIGRlZmF1bHQgcmFuZ2Ugb3B0aW9uIHZhbHVlIHdoaWNoIG1heSBiZSBudWxsLgorCisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpk
dW1wT3B0aW9uc0lmTmVlZGVkKToKKyAgICAgICAgLSBGYWN0b3IgY29kZSB0byBkdW1wIG9wdGlv
bnMgb3V0IHRvIGR1bXBPcHRpb25zSWZOZWVkZWQoKSBzaW5jZSB3ZSB3aWxsIG5lZWQKKyAgICAg
ICAgICB0aGF0IGxvZ2ljIGVsc2V3aGVyZS4KKworICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRP
cHRpb25zKToKKyAgICAgICAgLSBQYXJzZSBhbiBvcHRpb25zIHN0cmluZyBhbmQgc2V0IGVhY2gg
b2YgdGhlIHNwZWNpZmllZCBvcHRpb25zLgorCisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9w
dGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKToKKyAgICAgICAgKEpTQzo6T3B0
aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmVuc3VyZU9wdGlvbnNB
cmVDb2hlcmVudCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpv
cGVyYXRvciE9KToKKwogMjAxNS0wOC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBjb25zdCB0byBjb250ZW50IGV4dGVuc2lvbiBw
YXJzZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODg1NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw3ICsxNTUw
LDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZwogICAgICAgICBt
X2FyZ3VtZW50cy5hcHBlbmQoYXJndltpXSk7CiAKICAgICBpZiAobmVlZFRvRHVtcE9wdGlvbnMp
Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoSlNDOjpPcHRpb25zOjpEdW1w
TGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiLCBzdGRlcnIpOworICAg
ICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKHN0ZGVyciwgSlNDOjpPcHRpb25zOjpE
dW1wTGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiKTsKICAgICBKU0M6
Ok9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogICAgIGlmIChuZWVkVG9FeGl0
KQogICAgICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09wdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNPcHRpb25zUHJpdmF0
ZS5oIgorCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCitjb25zdCBjaGFyKiBKU0dldE9wdGlvbnMoKQoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoYnVpbGRlcik7Cisg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gZmFzdFN0
ckR1cChyZXN1bHQuYXNjaWkoKS5kYXRhKCkpOworfQorCit2b2lkIEpTU2V0T3B0aW9uKGNvbnN0
IGNoYXIqIG9wdGlvbnMpCit7CisgICAgT3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zKTsKK30K
Kwordm9pZCBKU1JlbGVhc2VPcHRpb25zKGNvbnN0IGNoYXIqIHNhdmVkT3B0aW9ucykKK3sKKyAg
ICBmYXN0RnJlZShjb25zdF9jYXN0PGNoYXIqPihzYXZlZE9wdGlvbnMpKTsKK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPcHRpb25zUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPcHRpb25zUHJpdmF0ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09wdGlvbnNQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNPcHRpb25z
UHJpdmF0ZV9oCisjZGVmaW5lIEpTT3B0aW9uc1ByaXZhdGVfaAorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKyAgICAKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCBHZXRzIHRoZSBKU0Mgb3B0
aW9ucyBpbiBhIHN0cmluZy4KKyBAcmVzdWx0IEEgcG9pbnRlciB0byBhIHN0cmluZyBvZiBvcHRp
b25zLgorIEBkaXNjdXNzaW9uIFdoZW4gZG9uZSwgdGhlIHVzZXIgbXVzdCBjYWxsIEpTUmVsZWFz
ZU9wdGlvbnMgdG8gcmVsZWFzZSB0aGUgZ290dGVuIG9wdGlvbnMgc3RyaW5nLgorICovCitKU19F
WFBPUlQgY29uc3QgY2hhciogSlNHZXRPcHRpb25zKCk7CisKKy8qIQorIEBmdW5jdGlvbgorIEBh
YnN0cmFjdCBTZXRzIG9wdGlvbnMgc3BlY2lmaWVkIGluIHRoZSBvcHRpb25zIHN0cmluZy4KKyBA
cGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdpbGwgYmUgYXBwbGllZC4KKyAqLworSlNf
RVhQT1JUIHZvaWQgSlNTZXRPcHRpb24oY29uc3QgY2hhciogb3B0aW9ucyk7CisKKy8qIQorIEBm
dW5jdGlvbgorIEBhYnN0cmFjdCBSZWxlYXNlcyB0aGUgcHJldmlvdXNseSBzYXZlZCBKU09wdGlv
bnMuCisgQHBhcmFtIHNhdmVkT3B0aW9ucyBUaGUgcHJldmlvdXNseSBzYXZlZCBKU09wdGlvbnMu
CisgKi8KK0pTX0VYUE9SVCB2b2lkIEpTUmVsZWFzZU9wdGlvbnMoY29uc3QgY2hhciogc2F2ZWRP
cHRpb25zKTsKKyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
LyBKU09wdGlvbnNQcml2YXRlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkocmV2aXNpb24g
MTg4NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCIKIAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZh
dGUuaCIKKyNpbmNsdWRlICJKU09wdGlvbnNQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlw
dENvcmUuaCIKICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC03OCw2ICs3OSwxMCBAQCBzdGF0aWMgYm9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhK
U0NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0cnVjdCBUaWVyT3B0aW9ucyB7CisgICAgY29u
c3QgY2hhciogdGllcjsKKyAgICBjb25zdCBjaGFyKiBvcHRpb25zU3RyOworfTsKIAogaW50IHRl
c3RFeGVjdXRpb25UaW1lTGltaXQoKQogewpAQCAtOTcsMzYgKzEwMiw1MSBAQCBpbnQgdGVzdEV4
ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgSlNTdHJpbmdSZWxlYXNlKGN1cnJlbnRDUFVUaW1lU3Ry
KTsKICAgICAKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0OiAqLwotICAgIEpTQ29udGV4dEdy
b3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgLjEwZiwgc2hvdWxkVGVybWlu
YXRlQ2FsbGJhY2ssIDApOwotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJT
Y3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7
IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gIjsKLSAg
ICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
bG9vcEZvcmV2ZXJTY3JpcHQpOwotICAgICAgICBleGNlcHRpb24gPSBudWxscHRyOwotICAgICAg
ICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwotICAgICAgICBhdXRv
IHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAgIHYgPSBKU0V2YWx1YXRlU2Ny
aXB0KGNvbnRleHQsIHNjcmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwgMSwgJmV4Y2VwdGlvbik7Ci0g
ICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSAmJiBzaG91
bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKLSAgICAgICAgICAgIHByaW50ZigiUEFTUzog
c2NyaXB0IHRpbWVkIG91dCBhcyBleHBlY3RlZC5cbiIpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSkK
LSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFz
IGV4cGVjdGVkLlxuIik7Ci0gICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
V2FzQ2FsbGVkKQotICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQg
Y2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQuXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0
aHJvd24uXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
IFRpZXJPcHRpb25zIHRpZXJPcHRpb25zTGlzdFtdID0geworICAgICAgICB7ICJMTElOVCIsICAg
ICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9ZmFsc2UiIH0sCisgICAgICAgIHsgIkJhc2VsaW5l
IiwgIi0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZHSklUPWZhbHNlIiB9LAor
ICAgICAgICB7ICJERkciLCAgICAgICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVz
ZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAorICAgICAgICB7ICJGVEwiLCAgICAg
ICItLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10cnVlIC0tdXNlRlRM
SklUPXRydWUiIH0sCisgICAgfTsKKworICAgIGZvciAoYXV0byB0aWVyT3B0aW9ucyA6IHRpZXJP
cHRpb25zTGlzdCkgeworICAgICAgICBjb25zdCBjaGFyKiBzYXZlZE9wdGlvbnMgPSBKU0dldE9w
dGlvbnMoKTsKKyAgICAgICAgSlNTZXRPcHRpb24odGllck9wdGlvbnMub3B0aW9uc1N0cik7CisK
KyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3Vw
LCAuMTBmLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gImZ1bmN0aW9uIGZvbygpIHsgdmFy
IHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50
Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBmb28oKTsiOworICAgICAg
ICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
bG9vcEZvcmV2ZXJTY3JpcHQpOworICAgICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAg
ICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICB2
ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEs
ICZleGNlcHRpb24pOworICAgICAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0VGltZSkg
PCBtaWxsaXNlY29uZHMoMTUwKSkgJiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQp
CisgICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZWQgb3V0IGFzIGV4
cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoISgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHMoMTUw
KSkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IGRpZCBub3Qg
dGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1lb3V0IGNhbGxiYWNrIHdhcyBub3Qg
Y2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFleGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CisK
KyAgICAgICAgSlNTZXRPcHRpb24oc2F2ZWRPcHRpb25zKTsKKyAgICAgICAgSlNSZWxlYXNlT3B0
aW9ucyhzYXZlZE9wdGlvbnMpOwogICAgIH0KICAgICAKICAgICAvKiBUZXN0IHRoZSBzY3JpcHQg
dGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRj
aGFibGU6ICovCiAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4
dEdyb3VwLCAwLjEwZiwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAgIHsKLSAgICAg
ICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJl
bnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0g
c3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0iOworICAgICAgICBjb25z
dCBjaGFyKiBsb29wRm9yZXZlclNjcmlwdCA9ICJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRp
bWUgPSBjdXJyZW50Q1BVVGltZSgpOyB0cnkgeyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQ
VVRpbWUoKSAtIHN0YXJ0VGltZSA+IC4xNTApIGJyZWFrOyB9IH0gY2F0Y2goZSkgeyB9IH0gZm9v
KCk7IjsKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcobG9vcEZvcmV2ZXJTY3JpcHQpOwogICAgICAgICBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwpAQCAt
MTUzLDcgKzE3Myw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAvKiBUZXN0
IHNjcmlwdCB0aW1lb3V0IHdpdGggbm8gY2FsbGJhY2s6ICovCiAgICAgSlNDb250ZXh0R3JvdXBT
ZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCAwLCAwKTsKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gInZhciBzdGFydFRpbWUgPSBj
dXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0
YXJ0VGltZSA+IC4xNTApIGJyZWFrOyB9ICI7CisgICAgICAgIGNvbnN0IGNoYXIqIGxvb3BGb3Jl
dmVyU2NyaXB0ID0gImZ1bmN0aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVU
aW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4g
LjE1MCkgYnJlYWs7IH0gfSBmb28oKTsiOwogICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29wRm9yZXZlclNjcmlwdCk7CiAgICAgICAg
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gY3VycmVudENQ
VVRpbWUoKTsKQEAgLTE3Nyw3ICsxOTcsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCBjYW5jZWxsYXRpb246ICovCiAgICAgSlNDb250
ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAwLjEwZiwgY2FuY2Vs
VGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZv
cmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0
cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0g
IjsKKyAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAiZnVuY3Rpb24gZm9v
KCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYg
KGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSB9IGZvbygpOyI7
CiAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAg
ICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOwpAQCAtMjAzLDcgKzIyMyw3
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAvKiBUZXN0IHNjcmlwdCB0aW1l
b3V0IGV4dGVuc2lvbjogKi8KICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1p
dChjb250ZXh0R3JvdXAsIDAuMTAwZiwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOwogICAg
IHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGlt
ZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgp
IC0gc3RhcnRUaW1lID4gLjUwMCkgYnJlYWs7IH0gIjsKKyAgICAgICAgY29uc3QgY2hhciogbG9v
cEZvcmV2ZXJTY3JpcHQgPSAiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRp
bWUgPiAuNTAwKSBicmVhazsgfSB9IGZvbygpOyI7CiAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlw
dCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKICAg
ICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJy
ZW50Q1BVVGltZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxODg1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYs
NiArMjk2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXEFQSVxKU0NvbnRleHRSZWYu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTQ1Rlc3RSdW5uZXJVdGls
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNPYmplY3RSZWYuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTT3B0aW9ucy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNTY3JpcHRSZWYuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTU3RyaW5nUmVmLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXEFQSVxKU1N0cmluZ1JlZkJTVFIuY3BwIiAvPgpAQCAtOTUyLDYgKzk1
Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNFeHBvcnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU09iamVjdFJlZi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTT2JqZWN0UmVmUHJpdmF0ZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTT3B0aW9uc1ByaXZhdGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEFQSVxKU1JldGFpblB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEpTU2NyaXB0UmVmUHJpdmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEpTU3RyaW5nUmVmLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODg1NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQVBJXEpTT2JqZWN0UmVmLmNwcCI+CiAgICAgICA8Rmls
dGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cQVBJXEpTT3B0aW9ucy5jcHAiPgorICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXEFQSVxKU1NjcmlwdFJl
Zi5jcHAiPgogICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTE4OTgsNiArMTkwMSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNPYmpl
Y3RSZWZQcml2YXRlLmgiPgogICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU09wdGlvbnNQcml2YXRlLmgi
PgorICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU1JldGFpblB0ci5oIj4KICAgICAgIDxGaWx0ZXI+QVBJ
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTg4NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTQs
MTMgKzE2OTQsMTMgQEAKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYz
N0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CiAJCUUzNTQ2MjJC
MUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyog
Q29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5jcHAgKi87IH07CisJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQjFC
NzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCAqLzsgfTsKIAkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOUY1
NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKLQkJRTM1RTAzNUYx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsK
LQkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4
ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwICovOyB9OwpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlE
QUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRT
b3VyY2VEdW1wLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50
cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJ
RkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFNUYxMURGMUI4MzFBRDkwMDgyMzgwOCAvKiBKU09wdGlvbnNQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTVGMTFE
RTFCODMxQUMzMDA4MjM4MDggLyogSlNPcHRpb25zUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNUYxMUUwMUI4MzFBRTAwMDgyMzgw
OCAvKiBKU09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU1RjExREQxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9ucy5jcHAgKi87IH07
CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFN0JBNjEwMUExQTdDRUMwMEYx
RjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYy
MDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFr
cG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzUyNCwxNiArMzUyNiwxNiBAQAogCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2
MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzQjNFMjUx
QjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1RTAzNjExQjdB
QjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VCMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVSZWNv
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlUmVjb3JkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNDMDlGNTQxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU5Miw2ICszNTk0LDggQEAK
IAkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkzMkE2
MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFNUYxMUREMUI4MzFBQzMwMDgyMzgwOCAvKiBKU09wdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU1RjExREUxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9uc1ByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPcHRpb25zUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhl
YXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFN0JBNjBFMUEx
QTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQyNTcsNiArNDI2MSw4IEBACiAJCQkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpT
T2JqZWN0UmVmLmNwcCAqLywKIAkJCQkxNDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmpl
Y3RSZWYuaCAqLywKIAkJCQlBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQ
cml2YXRlLmggKi8sCisJCQkJRkU1RjExREQxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9ucy5j
cHAgKi8sCisJCQkJRkU1RjExREUxQjgzMUFDMzAwODIzODA4IC8qIEpTT3B0aW9uc1ByaXZhdGUu
aCAqLywKIAkJCQk5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyogSlNQcm9maWxlclByaXZhdGUu
Y3BwICovLAogCQkJCTk1MkM2M0FDMEU0Nzc3RDYwMEMxMzkzNiAvKiBKU1Byb2ZpbGVyUHJpdmF0
ZS5oICovLAogCQkJCTk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAvKiBKU1JldGFpblB0ci5oICov
LApAQCAtNjIyNyw2ICs2MjMzLDcgQEAKIAkJCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyog
R2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQ0MTdFQTlGNTkwMEFC
QjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzNDEzNEZGMEE2MDBB
RkFEQjUgLyogSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTVGMTFERjFCODMxQUQ5MDA4
MjM4MDggLyogSlNPcHRpb25zUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5MDAx
NkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjgz
MTkwMjE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzYwOCw2ICs3NjE1LDcgQEAKIAkJCQkxNDdGMzlEMTEwN0VDMzc2MDA0MjdB
NDggLyogSlNDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQy
N0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGQ0U0MEE1MUU0
NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFNUYxMUUw
MUI4MzFBRTAwMDgyMzgwOCAvKiBKU09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
M0M2MTYxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHJldmlzaW9uIDE4ODU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiAjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAjaW5jbHVkZSA8
c3lzL3N5c2N0bC5oPgpAQCAtODQsNiArODUsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBj
aGFyKiBzdHJpbmcsIE9wCiAKIHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
Y29uc3QgY2hhciomIHZhbHVlKQogeworICAgIGlmICghc3RybGVuKHN0cmluZykpCisgICAgICAg
IHN0cmluZyA9IG51bGxwdHI7CiAgICAgdmFsdWUgPSBzdHJpbmc7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNDksNiArMTUyLDggQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdD
TWFya2VycwogI2VuZGlmCiB9CiAKK2NvbnN0IGNoYXIqIGNvbnN0IE9wdGlvblJhbmdlOjpzX251
bGxSYW5nZVN0ciA9ICI8bnVsbD4iOworCiBib29sIE9wdGlvblJhbmdlOjppbml0KGNvbnN0IGNo
YXIqIHJhbmdlU3RyaW5nKQogewogICAgIC8vIHJhbmdlU3RyaW5nIHNob3VsZCBiZSBpbiB0aGUg
Zm9ybSBvZiBbIV08bG93Pls6PGhpZ2g+XQpAQCAtMTU2LDE0ICsxNjEsMTYgQEAgYm9vbCBPcHRp
b25SYW5nZTo6aW5pdChjb25zdCBjaGFyKiByYW5nZQogCiAgICAgYm9vbCBpbnZlcnQgPSBmYWxz
ZTsKIAotICAgIGlmIChtX3N0YXRlID4gVW5pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICBpZiAoIXJhbmdlU3RyaW5nKSB7CiAgICAgICAgIG1fc3RhdGUgPSBJbml0RXJy
b3I7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIXN0cmNtcChyYW5n
ZVN0cmluZywgc19udWxsUmFuZ2VTdHIpKSB7CisgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxp
emVkOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgbV9yYW5nZVN0cmlu
ZyA9IHJhbmdlU3RyaW5nOwogCiAgICAgaWYgKCpyYW5nZVN0cmluZyA9PSAnIScpIHsKQEAgLTM2
MCwzMiArMzY3LDEwMiBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAg
QVNTRVJUKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSBPcHRp
b25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7CiAgICAgICAgICAgICBBU1NFUlQoT3B0
aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpID49IDApOwogCi0gICAgICAg
ICAgICBpZiAoT3B0aW9uczo6c2hvd09wdGlvbnMoKSkgewotICAgICAgICAgICAgICAgIER1bXBM
ZXZlbCBsZXZlbCA9IHN0YXRpY19jYXN0PER1bXBMZXZlbD4oT3B0aW9uczo6c2hvd09wdGlvbnMo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQotICAg
ICAgICAgICAgICAgICAgICBsZXZlbCA9IER1bXBMZXZlbDo6VmVyYm9zZTsKLQotICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBzd2l0
Y2ggKGxldmVsKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEdW1wTGV2ZWw6Ok5vbmU6Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpP
dmVycmlkZGVuOgotICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICJPdmVycmlkZGVuIEpTQyBv
cHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgRHVtcExldmVsOjpBbGw6Ci0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mg
b3B0aW9uczoiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIER1bXBMZXZlbDo6VmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiQWxs
IEpTQyBvcHRpb25zIHdpdGggZGVzY3JpcHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkdW1wQWxsT3B0aW9ucyhs
ZXZlbCwgdGl0bGUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBkdW1wT3B0aW9uc0lm
TmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKICAgICAg
ICAgfSk7CiB9CiAKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbnNJZk5lZWRlZCgpCit7CisgICAg
aWYgKE9wdGlvbnM6OnNob3dPcHRpb25zKCkpIHsKKyAgICAgICAgRHVtcExldmVsIGxldmVsID0g
c3RhdGljX2Nhc3Q8RHVtcExldmVsPihPcHRpb25zOjpzaG93T3B0aW9ucygpKTsKKyAgICAgICAg
aWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQorICAgICAgICAgICAgbGV2ZWwgPSBEdW1w
TGV2ZWw6OlZlcmJvc2U7CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgY2hhciogdGl0bGUg
PSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKGxldmVsKSB7CisgICAgICAgIGNhc2UgRHVtcExl
dmVsOjpOb25lOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpP
dmVycmlkZGVuOgorICAgICAgICAgICAgdGl0bGUgPSAiT3ZlcnJpZGRlbiBKU0Mgb3B0aW9uczoi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpBbGw6CisgICAg
ICAgICAgICB0aXRsZSA9ICJBbGwgSlNDIG9wdGlvbnM6IjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIER1bXBMZXZlbDo6VmVyYm9zZToKKyAgICAgICAgICAgIHRpdGxlID0gIkFs
bCBKU0Mgb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9uczoiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGR1bXBB
bGxPcHRpb25zKGJ1aWxkZXIsIGxldmVsLCB0aXRsZSwgbnVsbHB0ciwgIiAgICIsICJcbiIsIFNo
b3dEZWZhdWx0cyk7CisgICAgICAgIGRhdGFMb2coYnVpbGRlci50b1N0cmluZygpKTsKKyAgICB9
Cit9CisKK2Jvb2wgT3B0aW9uczo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHRpb25zU3RyKQor
eworICAgIFZlY3RvcjxjaGFyKj4gb3B0aW9uczsKKworICAgIHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4ob3B0aW9uc1N0cik7CisgICAgY2hhciogb3B0aW9uc1N0ckNvcHkgPSBXVEY6OmZhc3RTdHJE
dXAob3B0aW9uc1N0cik7CisgICAgY2hhciogZW5kID0gb3B0aW9uc1N0ckNvcHkgKyBsZW5ndGg7
CisgICAgY2hhciogcCA9IG9wdGlvbnNTdHJDb3B5OworCisgICAgd2hpbGUgKHAgPCBlbmQpIHsK
KyAgICAgICAgY2hhciogb3B0aW9uU3RhcnQgPSBwOworICAgICAgICBwID0gc3Ryc3RyKHAsICI9
Iik7CisgICAgICAgIGlmICghcCkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIic9JyBub3QgZm91
bmQgaW4gb3B0aW9uIHN0cmluZzogJXBcbiIsIG9wdGlvblN0YXJ0KTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwKys7CisKKyAgICAgICAgY2hhciogdmFs
dWVCZWdpbiA9IHA7CisgICAgICAgIGJvb2wgaGFzU3RyaW5nVmFsdWUgPSBmYWxzZTsKKyAgICAg
ICAgY29uc3QgaW50IG1pblN0cmluZ0xlbmd0aCA9IDI7IC8vIFRoZSBtaW4gaXMgYW4gZW1wdHkg
c3RyaW5nIGkuZS4gMiBkb3VibGUgcXVvdGVzLgorICAgICAgICBpZiAoKHAgKyBtaW5TdHJpbmdM
ZW5ndGggPCBlbmQpICYmICgqcCA9PSAnIicpKSB7CisgICAgICAgICAgICBwID0gc3Ryc3RyKHAg
KyAxLCAiXCIiKTsKKyAgICAgICAgICAgIGlmICghcCkgeworICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJNaXNzaW5nIHRyYWlsaW5nICdcIicgaW4gb3B0aW9uIHN0cmluZzogJXBcbiIsIG9wdGlv
blN0YXJ0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVuZCBvZiBzdHJpbmcg
bm90IGZvdW5kLgorICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFzU3RyaW5nVmFsdWUgPSB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcCA9IHN0cnN0cihwLCAiICIpOworICAgICAgICBp
ZiAoIXApCisgICAgICAgICAgICBwID0gZW5kOyAvLyBObyBtb3JlICIgIiBzZXBhcmF0b3IuIEhl
bmNlLCB0aGlzIGlzIHRoZSBsYXN0IGFyZy4KKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2Vs
bC1mb3JtZWQgc3RyaW5nIHZhbHVlLCBzdHJpcCB0aGUgcXVvdGVzLgorICAgICAgICBpZiAoaGFz
U3RyaW5nVmFsdWUpIHsKKyAgICAgICAgICAgIGNoYXIqIHZhbHVlRW5kID0gcDsKKyAgICAgICAg
ICAgIEFTU0VSVCgoKnZhbHVlQmVnaW4gPT0gJyInKSAmJiAoKHZhbHVlRW5kIC0gdmFsdWVCZWdp
bikgPj0gbWluU3RyaW5nTGVuZ3RoKSAmJiAodmFsdWVFbmRbLTFdID09ICciJykpOworICAgICAg
ICAgICAgbWVtbW92ZSh2YWx1ZUJlZ2luLCB2YWx1ZUJlZ2luICsgMSwgdmFsdWVFbmQgLSB2YWx1
ZUJlZ2luIC0gbWluU3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIHZhbHVlRW5kWy1taW5TdHJp
bmdMZW5ndGhdID0gJ1wwJzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0cmlwIGxlYWRpbmcg
LS0gaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKChwIC0gIG9wdGlvblN0YXJ0ID4gMikgJiYgb3B0
aW9uU3RhcnRbMF0gPT0gJy0nICYmIG9wdGlvblN0YXJ0WzFdID09ICctJykKKyAgICAgICAgICAg
IG9wdGlvblN0YXJ0ICs9IDI7CisKKyAgICAgICAgKnArKyA9ICdcMCc7CisgICAgICAgIG9wdGlv
bnMuYXBwZW5kKG9wdGlvblN0YXJ0KTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVl
OworICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykgeworICAgICAgICBib29sIG9wdGlv
blN1Y2Nlc3MgPSBzZXRPcHRpb24ob3B0aW9uKTsKKyAgICAgICAgaWYgKCFvcHRpb25TdWNjZXNz
KSB7CisgICAgICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIHNldCBvcHRpb24gOiAlc1xuIiwg
b3B0aW9uKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwog
Ly8gUGFyc2VzIGEgc2luZ2xlIGNvbW1hbmQgbGluZSBvcHRpb24gaW4gdGhlIGZvcm1hdCAiPG9w
dGlvbk5hbWU+PTx2YWx1ZT4iCiAvLyAobm8gc3BhY2VzIGFsbG93ZWQpIGFuZCBzZXQgdGhlIHNw
ZWNpZmllZCBvcHRpb24gaWYgYXBwcm9wcmlhdGUuCiBib29sIE9wdGlvbnM6OnNldE9wdGlvbihj
b25zdCBjaGFyKiBhcmcpCkBAIC00MjAsMTUgKzQ5NywzNSBAQCBib29sIE9wdGlvbnM6OnNldE9w
dGlvbihjb25zdCBjaGFyKiBhcmcpCiAgICAgcmV0dXJuIGZhbHNlOyAvLyBObyBvcHRpb24gbWF0
Y2hlZC4KIH0KIAotdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWwgbGV2ZWws
IGNvbnN0IGNoYXIqIHRpdGxlLCBGSUxFKiBzdHJlYW0pCit2b2lkIE9wdGlvbnM6OmR1bXBBbGxP
cHRpb25zKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgY29uc3QgY2hh
ciogdGl0bGUsCisgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25I
ZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uIHNob3dE
ZWZhdWx0c09wdGlvbikKK3sKKyAgICBpZiAodGl0bGUpIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQodGl0bGUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICB9CisKKyAgICBm
b3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgICAgIGlm
IChzZXBhcmF0b3IgJiYgaWQpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3Ip
OworICAgICAgICBkdW1wT3B0aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25J
RD4oaWQpLCBvcHRpb25IZWFkZXIsIG9wdGlvbkZvb3Rlciwgc2hvd0RlZmF1bHRzT3B0aW9uKTsK
KyAgICB9Cit9CisKK3ZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIpCiB7Ci0gICAgaWYgKHRpdGxlKQotICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVzXG4iLCB0aXRsZSk7Ci0gICAgZm9yIChpbnQgaWQgPSAwOyBpZCA8IG51bWJlck9mT3B0
aW9uczsgaWQrKykKLSAgICAgICAgZHVtcE9wdGlvbihsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9u
SUQ+KGlkKSwgc3RyZWFtLCAiICAgIiwgIlxuIik7CisgICAgZHVtcEFsbE9wdGlvbnMoYnVpbGRl
ciwgRHVtcExldmVsOjpBbGwsIG51bGxwdHIsICIgIiwgbnVsbHB0ciwgbnVsbHB0ciwgRG9udFNo
b3dEZWZhdWx0cyk7CiB9CiAKLXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihEdW1wTGV2ZWwgbGV2
ZWwsIE9wdGlvbklEIGlkLCBGSUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3Qg
Y2hhciogZm9vdGVyKQordm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYW0s
IER1bXBMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogdGl0bGUpCit7CisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIGR1bXBBbGxPcHRpb25zKGJ1aWxkZXIsIGxldmVsLCB0aXRsZSwgbnVs
bHB0ciwgIiAgICIsICJcbiIsIFNob3dEZWZhdWx0cyk7CisgICAgZnByaW50ZihzdHJlYW0sICIl
cyIsIGJ1aWxkZXIudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgT3B0aW9u
czo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9w
dGlvbklEIGlkLAorICAgIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBT
aG93RGVmYXVsdHNPcHRpb24gc2hvd0RlZmF1bHRzT3B0aW9uKQogewogICAgIGlmIChpZCA+PSBu
dW1iZXJPZk9wdGlvbnMpCiAgICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCkBAIC00
NDAsMTkgKzUzNywyNCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oRHVtcExldmVsIGxldmVs
CiAgICAgaWYgKGxldmVsID09IER1bXBMZXZlbDo6T3ZlcnJpZGRlbiAmJiAhd2FzT3ZlcnJpZGRl
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnByaW50ZihzdHJlYW0sICIlcyVzOiAiLCBoZWFk
ZXIsIG9wdGlvbi5uYW1lKCkpOwotICAgIG9wdGlvbi5kdW1wKHN0cmVhbSk7CisgICAgaWYgKGhl
YWRlcikKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGVhZGVyKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChvcHRpb24ubmFtZSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnPScpOworICAgIG9wdGlvbi5k
dW1wKGJ1aWxkZXIpOwogCi0gICAgaWYgKHdhc092ZXJyaWRkZW4pIHsKLSAgICAgICAgZnByaW50
ZihzdHJlYW0sICIgKGRlZmF1bHQ6ICIpOwotICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigp
LmR1bXAoc3RyZWFtKTsKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIpIik7CisgICAgaWYgKHdh
c092ZXJyaWRkZW4gJiYgKHNob3dEZWZhdWx0c09wdGlvbiA9PSBTaG93RGVmYXVsdHMpKSB7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGRlZmF1bHQ6ICIpOworICAgICAgICBvcHRpb24uZGVm
YXVsdE9wdGlvbigpLmR1bXAoYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpIik7
CiAgICAgfQogCi0gICAgaWYgKG5lZWRzRGVzY3JpcHRpb24pCi0gICAgICAgIGZwcmludGYoc3Ry
ZWFtLCAiICAgLi4uICVzIiwgb3B0aW9uLmRlc2NyaXB0aW9uKCkpOworICAgIGlmIChuZWVkc0Rl
c2NyaXB0aW9uKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAuLi4gIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG9wdGlvbi5kZXNjcmlwdGlvbigpKTsKKyAgICB9CiAKLSAgICBmcHJp
bnRmKHN0cmVhbSwgIiVzIiwgZm9vdGVyKTsKKyAgICBidWlsZGVyLmFwcGVuZChmb290ZXIpOwog
fQogCiB2b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCkBAIC00NjYsMzMg
KzU2OCwzNSBAQCB2b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAg
ICAgIENSQVNIKCk7CiB9CiAKLXZvaWQgT3B0aW9uOjpkdW1wKEZJTEUqIHN0cmVhbSkgY29uc3QK
K3ZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmJvb2xUeXBlOgotICAg
ICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgbV9lbnRyeS5ib29sVmFsID8gInRydWUiIDogImZh
bHNlIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkuYm9vbFZhbCA/ICJ0cnVlIiA6
ICJmYWxzZSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OnVuc2ln
bmVkVHlwZToKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIldSIsIG1fZW50cnkudW5zaWduZWRW
YWwpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnVuc2lnbmVkVmFsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpkb3VibGVUeXBlOgotICAg
ICAgICBmcHJpbnRmKHN0cmVhbSwgIiVsZiIsIG1fZW50cnkuZG91YmxlVmFsKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS5kb3VibGVWYWwpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmludDMyVHlwZToKLSAgICAgICAgZnByaW50ZihzdHJl
YW0sICIlZCIsIG1fZW50cnkuaW50MzJWYWwpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2VudHJ5LmludDMyVmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpvcHRpb25SYW5nZVR5cGU6Ci0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBtX2Vu
dHJ5Lm9wdGlvblJhbmdlVmFsLnJhbmdlU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChtX2VudHJ5Lm9wdGlvblJhbmdlVmFsLnJhbmdlU3RyaW5nKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Om9wdGlvblN0cmluZ1R5cGU6IHsKICAgICAgICAgY29u
c3QgY2hhciogb3B0aW9uID0gbV9lbnRyeS5vcHRpb25TdHJpbmdWYWw7CiAgICAgICAgIGlmICgh
b3B0aW9uKQogICAgICAgICAgICAgb3B0aW9uID0gIiI7Ci0gICAgICAgIGZwcmludGYoc3RyZWFt
LCAiJXMiLCBvcHRpb24pOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChvcHRpb24pOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpnY0xvZ0xldmVsVHlw
ZTogewotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgR0NMb2dnaW5nOjpsZXZlbEFzU3Ry
aW5nKG1fZW50cnkuZ2NMb2dMZXZlbFZhbCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChHQ0xv
Z2dpbmc6OmxldmVsQXNTdHJpbmcobV9lbnRyeS5nY0xvZ0xldmVsVmFsKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCShyZXZpc2lvbiAxODg1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1l
c3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZ0J1aWxkZXI7Cit9Cit1c2luZyBXVEY6OlN0cmluZ0J1
aWxkZXI7CisKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBIb3cgZG8gSlNDIFZNIG9wdGlvbnMgd29y
az8KQEAgLTgwLDExICs4NSwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGluaXQoY29uc3QgY2hh
ciopOwogICAgIGJvb2wgaXNJblJhbmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5n
ZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VT
dHJpbmcgOiAiPG51bGw+IjsgfQorICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJh
bmdlU3RyOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
CiBwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsK
KwogICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKICAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5n
OwogICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7CkBAIC0zNTksMTEgKzM2NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKKyAg
ICAvLyBQYXJzZXMgYSBzdHJpbmcgb2Ygb3B0aW9ucyB3aGVyZSBlYWNoIG9wdGlvbiBpcyBvZiB0
aGUgZm9ybWF0ICItLTxvcHRpb25OYW1lPj08dmFsdWU+IgorICAgIC8vIGFuZCBhcmUgc2VwYXJh
dGVkIGJ5IGEgc3BhY2UuIFRoZSBsZWFkaW5nICItLSIgaXMgb3B0aW9uYWwgYW5kIHdpbGwgYmUg
aWdub3JlZC4KKyAgICBzdGF0aWMgYm9vbCBzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdGlvbnNM
aXN0KTsKKwogICAgIC8vIFBhcnNlcyBhIHNpbmdsZSBjb21tYW5kIGxpbmUgb3B0aW9uIGluIHRo
ZSBmb3JtYXQgIjxvcHRpb25OYW1lPj08dmFsdWU+IgogICAgIC8vIChubyBzcGFjZXMgYWxsb3dl
ZCkgYW5kIHNldCB0aGUgc3BlY2lmaWVkIG9wdGlvbiBpZiBhcHByb3ByaWF0ZS4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWws
IGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0ciwgRklMRSogc3RyZWFtID0gc3Rkb3V0KTsKLSAg
ICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKER1bXBMZXZlbCwgT3B0aW9uSUQsIEZJTEUqIHN0cmVh
bSA9IHN0ZG91dCwgY29uc3QgY2hhciogaGVhZGVyID0gIiIsIGNvbnN0IGNoYXIqIGZvb3RlciA9
ICIiKTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25z
KEZJTEUqLCBEdW1wTGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIHZvaWQgZHVtcEFsbE9wdGlvbnNJbkFMaW5lKFN0cmluZ0J1aWxkZXImKTsKKwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwog
CiAgICAgLy8gRGVjbGFyZSBhY2Nlc3NvcnMgZm9yIGVhY2ggb3B0aW9uOgpAQCAtMzk1LDYgKzQw
OCwxNiBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9ucygpOwogCisgICAgZW51bSBTaG93RGVmYXVs
dHNPcHRpb24geworICAgICAgICBEb250U2hvd0RlZmF1bHRzLAorICAgICAgICBTaG93RGVmYXVs
dHMKKyAgICB9OworICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKKyAgICBz
dGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBjb25z
dCBjaGFyKiB0aXRsZSwKKyAgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFy
KiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0
aW9uKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2
ZWwsIE9wdGlvbklELAorICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNo
YXIqIG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uKTsKKwogICAgIC8vIERlY2xhcmUg
dGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgb3B0aW9ucyBzdG9yZToKICAgICBKU19FWFBP
UlREQVRBIHN0YXRpYyBFbnRyeSBzX29wdGlvbnNbbnVtYmVyT2ZPcHRpb25zXTsKICAgICBzdGF0
aWMgRW50cnkgc19kZWZhdWx0T3B0aW9uc1tudW1iZXJPZk9wdGlvbnNdOwpAQCAtNDExLDcgKzQz
NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKikg
Y29uc3Q7CisgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKwogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KICAgICAK
</data>
<flag name="review"
          id="284422"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259293</attachid>
            <date>2015-08-18 13:15:52 -0700</date>
            <delta_ts>2015-08-18 13:41:29 -0700</delta_ts>
            <desc>fix 3: fixed previous bug in tests</desc>
            <filename>bug-148125.patch</filename>
            <type>text/plain</type>
            <size>36015</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA4LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYWJpbGl0eSB0byBzYXZlIGFuZCByZXN0b3JlIEpTQyBvcHRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHA6CisgICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAg
ICAgICAgLSBFbXBsb3kgdGhlIG5ldyBvcHRpb25zIGdldHRlci9zZXR0ZXIgdG8gcnVuIHdhdGNo
ZG9nIHRlc3RzIGZvciBlYWNoIG9mIHRoZQorICAgICAgICAgIGV4ZWN1dGlvbiBlbmdpbmUgdGll
cnMuCisgICAgICAgIC0gQWxzbyBhbHRlcmVkIHRoZSB0ZXN0IHNjcmlwdHMgdG8gYmUgaW4gYSBm
dW5jdGlvbiBpbnN0ZWFkIG9mIGdsb2JhbCBjb2RlLgorICAgICAgICAgIFRoaXMgaXMgb25lIG9m
IDIgY2hhbmdlcyBuZWVkZWQgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5IHRvIGJlIEZUTCBj
b21waWxlZC4KKyAgICAgICAgICBUaGUgb3RoZXIgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGNvbXBp
bGluZyBDaGVja1dhdGNoZG9nVGltZXIgaW4gdGhlIEZUTCAod2hpY2gKKyAgICAgICAgICB3aWxs
IGJlIGFkZHJlc3NlZCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgLSBBZGQgdGhl
IGFiaWxpdHkgdG8gY2xlYXIgYSBzdHJpbmcgb3B0aW9uIHdpdGggYSBudWxscHRyIHZhbHVlLgor
ICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIHRvIHJlc3RvcmUgYSBkZWZhdWx0IHN0cmluZyBvcHRp
b24gdmFsdWUgd2hpY2ggbWF5IGJlIG51bGwuCisKKyAgICAgICAgKEpTQzo6T3B0aW9uUmFuZ2U6
OmluaXQpOgorICAgICAgICAtIEFkZCB0aGUgYWJpbGl0eSB0byBjbGVhciBhIHJhbmdlIG9wdGlv
biB3aXRoIGEgbnVsbCB2YWx1ZS4KKyAgICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byByZXN0b3Jl
IGEgZGVmYXVsdCByYW5nZSBvcHRpb24gdmFsdWUgd2hpY2ggbWF5IGJlIG51bGwuCisKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1
bXBPcHRpb25zSWZOZWVkZWQpOgorICAgICAgICAtIEZhY3RvciBjb2RlIHRvIGR1bXAgb3B0aW9u
cyBvdXQgdG8gZHVtcE9wdGlvbnNJZk5lZWRlZCgpIHNpbmNlIHdlIHdpbGwgbmVlZAorICAgICAg
ICAgIHRoYXQgbG9naWMgZWxzZXdoZXJlLgorCisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9w
dGlvbnMpOgorICAgICAgICAtIFBhcnNlIGFuIG9wdGlvbnMgc3RyaW5nIGFuZCBzZXQgZWFjaCBv
ZiB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuCisKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6ZHVtcEFs
bE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wT3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0
aW9uOjpkdW1wKToKKyAgICAgICAgLSBSZWZhY3RvcmVkIHNvIHRoYXQgdGhlIHVuZGVybHlpbmcg
ZHVtcGVyIGR1bXBzIHRvIGEgU3RyaW5nQnVpbGRlciBpbnN0ZWFkIG9mCisgICAgICAgICAgc3Rk
ZXJyLiAgVGhpcyBsZXRzIHVzIHJldXNlIHRoaXMgY29kZSB0byBzZXJpYWxpemUgYWxsIHRoZSBv
cHRpb25zIGludG8gYQorICAgICAgICAgIHNpbmdsZSBzdHJpbmcgZm9yIGR1bXBBbGxPcHRpb25z
SW5BTGluZSgpLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6
Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyk6CisKIDIwMTUtMDgtMTggIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBDTE9PUCBidWls
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODg1OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw3ICsxNTUwLDcg
QEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZwogICAgICAgICBtX2Fy
Z3VtZW50cy5hcHBlbmQoYXJndltpXSk7CiAKICAgICBpZiAobmVlZFRvRHVtcE9wdGlvbnMpCi0g
ICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoSlNDOjpPcHRpb25zOjpEdW1wTGV2
ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiLCBzdGRlcnIpOworICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKHN0ZGVyciwgSlNDOjpPcHRpb25zOjpEdW1w
TGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiKTsKICAgICBKU0M6Ok9w
dGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogICAgIGlmIChuZWVkVG9FeGl0KQog
ICAgICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJ
KHJldmlzaW9uIDE4ODU5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhl
Y3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4ZWN1dGlvblRpbWVMaW1pdFRlc3Qu
aCIKIAorI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0NvbnRl
eHRSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDo6Y2hyb25vOwordXNpbmcgSlNDOjpPcHRpb25zOwogCiBzdGF0aWMgSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQgPSBudWxscHRyOwogCkBAIC03OCwxNTkgKzgyLDIzNCBAQCBzdGF0aWMg
Ym9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhKU0NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3N0cnVjdCBUaWVyT3B0aW9ucyB7CisgICAgY29uc3QgY2hhciogdGllcjsKKyAgICB1bnNpZ25l
ZCB0aW1lTGltaXRBZGp1c3RtZW50TWlsbGlzOworICAgIGNvbnN0IGNoYXIqIG9wdGlvbnNTdHI7
Cit9OwogCiBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiB7Ci0gICAgY29udGV4dCA9IEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0ciwgbnVsbHB0cik7CisgICAgc3RhdGlj
IGNvbnN0IFRpZXJPcHRpb25zIHRpZXJPcHRpb25zTGlzdFtdID0geworICAgICAgICB7ICJMTElO
VCIsICAgIDAsICAgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUg
LS11c2VKSVQ9ZmFsc2UiIH0sCisgICAgICAgIHsgIkJhc2VsaW5lIiwgMCwgICAiLS1lbmFibGVD
b25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZH
SklUPWZhbHNlIiB9LAorICAgICAgICB7ICJERkciLCAgICAgIDAsICAgIi0tZW5hYmxlQ29uY3Vy
cmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10
cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAorICAgICAgICB7ICJGVEwiLCAgICAgIDIwMCwgIi0t
ZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAt
LXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisgICAgfTsKKyAgICAKKyAgICBi
b29sIGZhaWxlZCA9IGZhbHNlOwogCi0gICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3Vw
ID0gSlNDb250ZXh0R2V0R3JvdXAoY29udGV4dCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2Jq
ZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOwotICAgIEFTU0VSVChKU1Zh
bHVlSXNPYmplY3QoY29udGV4dCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOyAvLyBFbnN1cmUgb3B0aW9u
cyBpcyBpbml0aWFsaXplZCBmaXJzdC4KIAotICAgIEpTVmFsdWVSZWYgdiA9IG51bGxwdHI7Ci0g
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwotICAgIGJvb2wgZmFpbGVkID0gZmFs
c2U7CisgICAgZm9yIChhdXRvIHRpZXJPcHRpb25zIDogdGllck9wdGlvbnNMaXN0KSB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgc2F2ZWRPcHRpb25zQnVpbGRlcjsKKyAgICAgICAgT3B0aW9uczo6
ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9uc0J1aWxkZXIpOwogCi0gICAgSlNTdHJp
bmdSZWYgY3VycmVudENQVVRpbWVTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Y3VycmVudENQVVRpbWUiKTsKLSAgICBKU09iamVjdFJlZiBjdXJyZW50Q1BVVGltZUZ1bmN0aW9u
ID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgY3VycmVudENQVVRp
bWVTdHIsIGN1cnJlbnRDUFVUaW1lQXNKU0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIEpTT2JqZWN0
U2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50Q1BVVGltZVN0ciwgY3Vy
cmVudENQVVRpbWVGdW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsK
LSAgICBKU1N0cmluZ1JlbGVhc2UoY3VycmVudENQVVRpbWVTdHIpOwotICAgIAotICAgIC8qIFRl
c3Qgc2NyaXB0IHRpbWVvdXQ6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7Ci0g
ICAgewotICAgICAgICBjb25zdCBjaGFyKiBsb29wRm9yZXZlclNjcmlwdCA9ICJ2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYgKGN1cnJlbnRDUFVUaW1l
KCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSAiOwotICAgICAgICBKU1N0cmluZ1JlZiBz
Y3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29wRm9yZXZlclNjcmlwdCk7
Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgICAgIGF1dG8gc3RhcnRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0
LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKLSAgICAgICAgYXV0byBlbmRUaW1l
ID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICgoKGVuZFRpbWUgLSBz
dGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKDE1MCkpICYmIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
V2FzQ2FsbGVkKQotICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiBzY3JpcHQgdGltZWQgb3V0IGFz
IGV4cGVjdGVkLlxuIik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCEoKGVuZFRp
bWUgLSBzdGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKDE1MCkpKQotICAgICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogc2NyaXB0IGRpZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAg
ICAgICAgICAgIGlmICghc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNh
bGxlZC5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKCFleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHByaW50ZigiRkFJTDog
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwotICAgICAg
ICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBUZXN0
IHRoZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxk
IE5PVCBiZSBjYXRjaGFibGU6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCAwLjEwZiwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIDApOwot
ICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0
VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50
Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0iOwot
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhsb29wRm9yZXZlclNjcmlwdCk7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAg
ICAgIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgICAgIGF1
dG8gc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVT
Y3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKKyAgICAgICAgT3B0aW9u
czo6c2V0T3B0aW9ucyh0aWVyT3B0aW9ucy5vcHRpb25zU3RyKTsKICAgICAgICAgCi0gICAgICAg
IGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcygxNTApKSB8fCAhc2hv
dWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpIHsKLSAgICAgICAgICAgIGlmICghKChlbmRU
aW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSkKLSAgICAgICAgICAgICAgICBw
cmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkLlxuIik7Ci0g
ICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQotICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBj
YWxsZWQuXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IFRl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhwZWN0ZWQu
XG4iKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIGNhdWdodC5cbiIpOwotICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBUZXN0IHNjcmlwdCB0aW1l
b3V0IHdpdGggbm8gY2FsbGJhY2s6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCAwLCAwKTsKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gInZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+IC4x
NTApIGJyZWFrOyB9ICI7Ci0gICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKLSAgICAgICAgZXhjZXB0aW9u
ID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOwot
ICAgICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51
bGxwdHIsIDEsICZleGNlcHRpb24pOwotICAgICAgICBhdXRvIGVuZFRpbWUgPSBjdXJyZW50Q1BV
VGltZSgpOworICAgICAgICB1bnNpZ25lZCB0aWVyQWRqdXN0bWVudE1pbGxpcyA9IHRpZXJPcHRp
b25zLnRpbWVMaW1pdEFkanVzdG1lbnRNaWxsaXM7CisgICAgICAgIGRvdWJsZSB0aW1lTGltaXQ7
CisKKyAgICAgICAgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0
ciwgbnVsbHB0cik7CisKKyAgICAgICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwID0g
SlNDb250ZXh0R2V0R3JvdXAoY29udGV4dCk7CisgICAgICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9i
amVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAgICAgICAgQVNTRVJU
KEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBnbG9iYWxPYmplY3QpKTsKKworICAgICAgICBKU1Zh
bHVlUmVmIHYgPSBudWxscHRyOworICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisKKyAgICAgICAgSlNTdHJpbmdSZWYgY3VycmVudENQVVRpbWVTdHIgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiY3VycmVudENQVVRpbWUiKTsKKyAgICAgICAgSlNPYmplY3RS
ZWYgY3VycmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlv
bkNhbGxiYWNrKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxP
YmplY3QsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3Vy
cmVudENQVVRpbWVTdHIpOwogICAgICAgICAKLSAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0
VGltZSkgPCBtaWxsaXNlY29uZHMoMTUwKSkgJiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXND
YWxsZWQpCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IHNjcmlwdCB0aW1lZCBvdXQgYXMgZXhw
ZWN0ZWQgd2hlbiBubyBjYWxsYmFjayBpcyBzcGVjaWZpZWQuXG4iKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoISgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHMo
MTUwKSkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgZGlkIG5vdCB0aW1l
IG91dCBhcyBleHBlY3RlZCB3aGVuIG5vIGNhbGxiYWNrIGlzIHNwZWNpZmllZC5cbiIpOwotICAg
ICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDog
Ki8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEw
MDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4
dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKKyAgICAgICAg
eworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQg
PSAxNTAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciBzY3JpcHRCdWlsZGVyOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiKTsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8gMTAwMC4wKTsKKyAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAg
ICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNj
cmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0Nh
bGxlZCA9IGZhbHNlOworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBu
dWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGlt
ZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisKKyAgICAgICAgICAgIGlmICgoKGVuZFRpbWUgLSBzdGFy
dFRpbWUpIDwgbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkg
JiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCisgICAgICAgICAgICAgICAgcHJp
bnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZWQgb3V0IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlv
bnMudGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoKGVuZFRp
bWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhh
dmVGaXJlZCkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IGRp
ZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1lb3V0IGNhbGxiYWNrIHdh
cyBub3QgY2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFp
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KCFleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVy
KTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duLlxu
Iik7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworCisgICAgICAgIC8qIFRlc3QgdGhlIHNj
cmlwdCB0aW1lb3V0J3MgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiBzaG91bGQgTk9UIGJl
IGNhdGNoYWJsZTogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50
TWlsbGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAw
KTsKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQgPSAxNTAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOworICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmQoImZ1bmN0aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJl
bnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAiKTsKKyAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTnVtYmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2
ZUZpcmVkIC8gMTAwMC4wKTsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCIpIGJy
ZWFrOyB9IH0gY2F0Y2goZSkgeyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNl
OworCisgICAgICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAg
ICAgICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51
bGxwdHIsIDEsICZleGNlcHRpb24pOworICAgICAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0
YXJ0VGltZSkgPj0gbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVk
KSkgfHwgIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEoKGVuZFRpbWUgLSBzdGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldh
dGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJ
TDogJXMgc2NyaXB0IGRpZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9u
cy50aWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2Fz
Q2FsbGVkKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1l
b3V0IGNhbGxiYWNrIHdhcyBub3QgY2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6
ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3
YXMgY2F1Z2h0LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBU
ZXN0IHNjcmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjogKi8KLSAgICBKU0NvbnRleHRHcm91cFNl
dEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIDAuMTBmLCBjYW5jZWxUZXJtaW5hdGVD
YWxsYmFjaywgMCk7Ci0gICAgewotICAgICAgICBjb25zdCBjaGFyKiBsb29wRm9yZXZlclNjcmlw
dCA9ICJ2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYg
KGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSAiOwotICAgICAg
ICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29w
Rm9yZXZlclNjcmlwdCk7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1
dG8gc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVT
Y3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKICAgICAgICAgCi0gICAg
ICAgIGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcygxNTApKSAmJiBj
YW5jZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCAmJiAhZXhjZXB0aW9uKQotICAgICAgICAg
ICAgcHJpbnRmKCJQQVNTOiBzY3JpcHQgdGltZW91dCB3YXMgY2FuY2VsbGVkIGFzIGV4cGVjdGVk
LlxuIik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0
VGltZSkgPCBtaWxsaXNlY29uZHMoMTUwKSkgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAg
IHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgd2FzIG5vdCBjYW5jZWxsZWQuXG4iKTsKLSAg
ICAgICAgICAgIGlmICghY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNh
bGxlZC5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgLyogVGVzdCBz
Y3JpcHQgdGltZW91dCB3aXRoIG5vIGNhbGxiYWNrOiAqLworICAgICAgICB0aW1lTGltaXQgPSAo
MTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRleHRH
cm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgMCwgMCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxk
SGF2ZUZpcmVkID0gMTUwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50
Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7
IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZE51bWJlcih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCAv
IDEwMDAuMCk7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZCgiKSBicmVhazsgfSB9
IGZvbygpOyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRyOworICAgICAg
ICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKworICAgICAg
ICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAgdiA9
IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAm
ZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpIDwg
bWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkgJiYgIXNob3Vs
ZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFT
UzogJXMgc2NyaXB0IHRpbWVkIG91dCBhcyBleHBlY3RlZCB3aGVuIG5vIGNhbGxiYWNrIGlzIHNw
ZWNpZmllZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+PSBtaWxsaXNlY29uZHModGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAgICAgICAgICAgICAgICBwcmlu
dGYoIkZBSUw6ICVzIHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkIHdoZW4gbm8g
Y2FsbGJhY2sgaXMgc3BlY2lmaWVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCBj
YWxsZWQgc3RhbGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHByaW50Zigi
RkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIs
IHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChleGNlcHRpb24pIHsK
LSAgICAgICAgICAgIHByaW50ZigiRkFJTDogVW5leHBlY3RlZCBUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uIHRocm93bi5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAg
ICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCBjYW5jZWxsYXRpb246ICovCisgICAgICAgIHRpbWVM
aW1pdCA9ICgxMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpcykgLyAxMDAwLjA7CisgICAgICAgIEpT
Q29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0
LCBjYW5jZWxUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMTUwICsgdGllckFkanVz
dG1lbnRNaWxsaXM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2Ny
aXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCJmdW5jdGlvbiBm
b28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3Rh
cnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZE51bWJlcih0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCAvIDEwMDAuMCk7CisgICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworCisgICAgICAgICAgICBK
U1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRC
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOworICAgICAgICAgICAgY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgp
OworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxs
cHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGltZSA9
IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoKGVuZFRp
bWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhh
dmVGaXJlZCkpICYmIGNhbmNlbFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkICYmICFleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZW91dCB3YXMg
Y2FuY2VsbGVkIGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1p
bGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCkpIHx8IGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCB3
YXMgbm90IGNhbmNlbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAg
IGlmICghY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCisgICAgICAgICAgICAgICAg
ICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxs
ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBVbmV4cGVjdGVkIFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGV4dGVuc2lvbjogKi8KLSAgICBK
U0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIDAuMTAwZiwg
ZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOwotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciog
bG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdo
aWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjUwMCkgYnJl
YWs7IH0gIjsKLSAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcobG9vcEZvcmV2ZXJTY3JpcHQpOwotICAgICAgICBleGNlcHRpb24gPSBudWxs
cHRyOwotICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAg
IHYgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwg
MSwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7
Ci0gICAgICAgIGF1dG8gZGVsdGFUaW1lID0gZW5kVGltZSAtIHN0YXJ0VGltZTsKICAgICAgICAg
Ci0gICAgICAgIGlmICgoZGVsdGFUaW1lID49IG1pbGxpc2Vjb25kcygzMDApKSAmJiAoZGVsdGFU
aW1lIDwgbWlsbGlzZWNvbmRzKDUwMCkpICYmIChleHRlbmRUZXJtaW5hdGVDYWxsYmFja0NhbGxl
ZCA9PSAyKSAmJiBleGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IHNjcmlwdCB0
aW1lb3V0IHdhcyBleHRlbmRlZCBhcyBleHBlY3RlZC5cbiIpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChkZWx0YVRpbWUgPCBtaWxsaXNlY29uZHMoMjAwKSkKLSAgICAgICAgICAg
ICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCB0aW1lb3V0IHdhcyBub3QgZXh0ZW5kZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGRlbHRhVGltZSA+PSBtaWxsaXNlY29u
ZHMoNTAwKSkKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRp
bWVvdXQuXG4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGV4dGVuZFRlcm1pbmF0
ZUNhbGxiYWNrQ2FsbGVkIDwgMSkKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlw
dCB0aW1lb3V0IGNhbGxiYWNrIHdhcyBub3QgY2FsbGVkLlxuIik7Ci0gICAgICAgICAgICBpZiAo
ZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPCAyKQotICAgICAgICAgICAgICAgIHByaW50
ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYWZ0ZXIgdGlt
ZW91dCBleHRlbnNpb24uXG4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uIHdhcyBub3QgdGhyb3duIGR1cmluZyB0aW1lb3V0IGV4dGVuc2lvbiB0ZXN0Llxu
Iik7CisgICAgICAgIC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgZXh0ZW5zaW9uOiAqLworICAgICAg
ICB0aW1lTGltaXQgPSAoMTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAg
ICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRp
bWVMaW1pdCwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOworICAgICAgICB7CisgICAgICAg
ICAgICB1bnNpZ25lZCB0aW1lQmVmb3JlRXh0ZW5kZWREZWFkbGluZSA9IDIwMCArIHRpZXJBZGp1
c3RtZW50TWlsbGlzOworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyRXh0ZW5kZWREZWFk
bGluZSA9IDM1MCArIHRpZXJBZGp1c3RtZW50TWlsbGlzOworICAgICAgICAgICAgdW5zaWduZWQg
bWF4QnVzeUxvb3BUaW1lID0gNTAwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisKKyAgICAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxk
ZXIuYXBwZW5kKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChj
dXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3JpcHRCdWls
ZGVyLmFwcGVuZE51bWJlcihtYXhCdXN5TG9vcFRpbWUgLyAxMDAwLjApOyAvLyBpbiBzZWNvbmRz
LgorICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoIikgYnJlYWs7IH0gfSBmb28oKTsi
KTsKKworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGV4dGVuZFRlcm1pbmF0
ZUNhbGxiYWNrQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJy
ZW50Q1BVVGltZSgpOworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwg
c2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1
dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICBhdXRvIGRlbHRhVGlt
ZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoKGRlbHRhVGltZSA+PSBtaWxsaXNlY29uZHModGlt
ZUJlZm9yZUV4dGVuZGVkRGVhZGxpbmUpKSAmJiAoZGVsdGFUaW1lIDwgbWlsbGlzZWNvbmRzKHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUpKSAmJiAoZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2tDYWxs
ZWQgPT0gMikgJiYgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFTUzogJXMg
c2NyaXB0IHRpbWVvdXQgd2FzIGV4dGVuZGVkIGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMu
dGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVsdGFUaW1l
IDwgbWlsbGlzZWNvbmRzKHRpbWVCZWZvcmVFeHRlbmRlZERlYWRsaW5lKSkKKyAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCB3YXMgbm90IGV4dGVuZGVk
IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGVsdGFUaW1lID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJFeHRlbmRlZERlYWRsaW5l
KSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgZGlkIG5vdCB0
aW1lb3V0LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkIDwgMSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMg
bm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGlmIChl
eHRlbmRUZXJtaW5hdGVDYWxsYmFja0NhbGxlZCA8IDIpCisgICAgICAgICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYWZ0
ZXIgdGltZW91dCBleHRlbnNpb24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duIGR1cmluZyB0aW1lb3V0IGV4dGVuc2lvbiB0ZXN0LlxuIiwgdGllck9wdGlvbnMudGll
cik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UoY29udGV4dCk7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CisK
KyAgICAgICAgT3B0aW9uczo6c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KKyAgICAKICAgICByZXR1cm4gZmFpbGVkOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9u
IDE4ODU5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgT1MoREFS
V0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgpAQCAt
ODQsNiArODUsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wCiAK
IHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciomIHZhbHVl
KQogeworICAgIGlmICghc3RybGVuKHN0cmluZykpCisgICAgICAgIHN0cmluZyA9IG51bGxwdHI7
CiAgICAgdmFsdWUgPSBzdHJpbmc7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNDksNiArMTUy
LDggQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogI2VuZGlmCiB9
CiAKK2NvbnN0IGNoYXIqIGNvbnN0IE9wdGlvblJhbmdlOjpzX251bGxSYW5nZVN0ciA9ICI8bnVs
bD4iOworCiBib29sIE9wdGlvblJhbmdlOjppbml0KGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKQog
ewogICAgIC8vIHJhbmdlU3RyaW5nIHNob3VsZCBiZSBpbiB0aGUgZm9ybSBvZiBbIV08bG93Pls6
PGhpZ2g+XQpAQCAtMTU2LDE0ICsxNjEsMTYgQEAgYm9vbCBPcHRpb25SYW5nZTo6aW5pdChjb25z
dCBjaGFyKiByYW5nZQogCiAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKIAotICAgIGlmIChtX3N0
YXRlID4gVW5pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBpZiAoIXJh
bmdlU3RyaW5nKSB7CiAgICAgICAgIG1fc3RhdGUgPSBJbml0RXJyb3I7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIXN0cmNtcChyYW5nZVN0cmluZywgc19udWxsUmFu
Z2VTdHIpKSB7CisgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgbV9yYW5nZVN0cmluZyA9IHJhbmdlU3RyaW5nOwog
CiAgICAgaWYgKCpyYW5nZVN0cmluZyA9PSAnIScpIHsKQEAgLTM2MCwzMiArMzY3LDEwMiBAQCB2
b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb24oKSk7CiAgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dGhyZXNob2xkRm9y
T3B0aW1pemVBZnRlcldhcm1VcCgpID49IDApOwogCi0gICAgICAgICAgICBpZiAoT3B0aW9uczo6
c2hvd09wdGlvbnMoKSkgewotICAgICAgICAgICAgICAgIER1bXBMZXZlbCBsZXZlbCA9IHN0YXRp
Y19jYXN0PER1bXBMZXZlbD4oT3B0aW9uczo6c2hvd09wdGlvbnMoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBs
ZXZlbCA9IER1bXBMZXZlbDo6VmVyYm9zZTsKLQotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRpdGxlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEdW1wTGV2ZWw6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpPdmVycmlkZGVuOgotICAgICAg
ICAgICAgICAgICAgICB0aXRsZSA9ICJPdmVycmlkZGVuIEpTQyBvcHRpb25zOiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpBbGw6
Ci0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mgb3B0aW9uczoiOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIER1bXBMZXZlbDo6VmVy
Ym9zZToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiQWxsIEpTQyBvcHRpb25zIHdpdGgg
ZGVzY3JpcHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBkdW1wQWxsT3B0aW9ucyhsZXZlbCwgdGl0bGUpOwotICAg
ICAgICAgICAgfQotCisgICAgICAgICAgICBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgICAg
ICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKICAgICAgICAgfSk7CiB9CiAKK3ZvaWQg
T3B0aW9uczo6ZHVtcE9wdGlvbnNJZk5lZWRlZCgpCit7CisgICAgaWYgKE9wdGlvbnM6OnNob3dP
cHRpb25zKCkpIHsKKyAgICAgICAgRHVtcExldmVsIGxldmVsID0gc3RhdGljX2Nhc3Q8RHVtcExl
dmVsPihPcHRpb25zOjpzaG93T3B0aW9ucygpKTsKKyAgICAgICAgaWYgKGxldmVsID4gRHVtcExl
dmVsOjpWZXJib3NlKQorICAgICAgICAgICAgbGV2ZWwgPSBEdW1wTGV2ZWw6OlZlcmJvc2U7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY29uc3QgY2hhciogdGl0bGUgPSBudWxscHRyOworICAgICAg
ICBzd2l0Y2ggKGxldmVsKSB7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpOb25lOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpPdmVycmlkZGVuOgorICAgICAg
ICAgICAgdGl0bGUgPSAiT3ZlcnJpZGRlbiBKU0Mgb3B0aW9uczoiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpBbGw6CisgICAgICAgICAgICB0aXRsZSA9ICJB
bGwgSlNDIG9wdGlvbnM6IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIER1bXBM
ZXZlbDo6VmVyYm9zZToKKyAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mgb3B0aW9ucyB3aXRo
IGRlc2NyaXB0aW9uczoiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGR1bXBBbGxPcHRpb25zKGJ1aWxkZXIs
IGxldmVsLCB0aXRsZSwgbnVsbHB0ciwgIiAgICIsICJcbiIsIFNob3dEZWZhdWx0cyk7CisgICAg
ICAgIGRhdGFMb2coYnVpbGRlci50b1N0cmluZygpKTsKKyAgICB9Cit9CisKK2Jvb2wgT3B0aW9u
czo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHRpb25zU3RyKQoreworICAgIFZlY3RvcjxjaGFy
Kj4gb3B0aW9uczsKKworICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ob3B0aW9uc1N0cik7Cisg
ICAgY2hhciogb3B0aW9uc1N0ckNvcHkgPSBXVEY6OmZhc3RTdHJEdXAob3B0aW9uc1N0cik7Cisg
ICAgY2hhciogZW5kID0gb3B0aW9uc1N0ckNvcHkgKyBsZW5ndGg7CisgICAgY2hhciogcCA9IG9w
dGlvbnNTdHJDb3B5OworCisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgY2hhciogb3B0
aW9uU3RhcnQgPSBwOworICAgICAgICBwID0gc3Ryc3RyKHAsICI9Iik7CisgICAgICAgIGlmICgh
cCkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIic9JyBub3QgZm91bmQgaW4gb3B0aW9uIHN0cmlu
ZzogJXBcbiIsIG9wdGlvblN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBwKys7CisKKyAgICAgICAgY2hhciogdmFsdWVCZWdpbiA9IHA7CisgICAg
ICAgIGJvb2wgaGFzU3RyaW5nVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgY29uc3QgaW50IG1pblN0
cmluZ0xlbmd0aCA9IDI7IC8vIFRoZSBtaW4gaXMgYW4gZW1wdHkgc3RyaW5nIGkuZS4gMiBkb3Vi
bGUgcXVvdGVzLgorICAgICAgICBpZiAoKHAgKyBtaW5TdHJpbmdMZW5ndGggPCBlbmQpICYmICgq
cCA9PSAnIicpKSB7CisgICAgICAgICAgICBwID0gc3Ryc3RyKHAgKyAxLCAiXCIiKTsKKyAgICAg
ICAgICAgIGlmICghcCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJNaXNzaW5nIHRyYWls
aW5nICdcIicgaW4gb3B0aW9uIHN0cmluZzogJXBcbiIsIG9wdGlvblN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVuZCBvZiBzdHJpbmcgbm90IGZvdW5kLgorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaGFzU3RyaW5nVmFsdWUgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgcCA9IHN0cnN0cihwLCAiICIpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAg
ICBwID0gZW5kOyAvLyBObyBtb3JlICIgIiBzZXBhcmF0b3IuIEhlbmNlLCB0aGlzIGlzIHRoZSBs
YXN0IGFyZy4KKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2VsbC1mb3JtZWQgc3RyaW5nIHZh
bHVlLCBzdHJpcCB0aGUgcXVvdGVzLgorICAgICAgICBpZiAoaGFzU3RyaW5nVmFsdWUpIHsKKyAg
ICAgICAgICAgIGNoYXIqIHZhbHVlRW5kID0gcDsKKyAgICAgICAgICAgIEFTU0VSVCgoKnZhbHVl
QmVnaW4gPT0gJyInKSAmJiAoKHZhbHVlRW5kIC0gdmFsdWVCZWdpbikgPj0gbWluU3RyaW5nTGVu
Z3RoKSAmJiAodmFsdWVFbmRbLTFdID09ICciJykpOworICAgICAgICAgICAgbWVtbW92ZSh2YWx1
ZUJlZ2luLCB2YWx1ZUJlZ2luICsgMSwgdmFsdWVFbmQgLSB2YWx1ZUJlZ2luIC0gbWluU3RyaW5n
TGVuZ3RoKTsKKyAgICAgICAgICAgIHZhbHVlRW5kWy1taW5TdHJpbmdMZW5ndGhdID0gJ1wwJzsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFN0cmlwIGxlYWRpbmcgLS0gaWYgcHJlc2VudC4KKyAg
ICAgICAgaWYgKChwIC0gIG9wdGlvblN0YXJ0ID4gMikgJiYgb3B0aW9uU3RhcnRbMF0gPT0gJy0n
ICYmIG9wdGlvblN0YXJ0WzFdID09ICctJykKKyAgICAgICAgICAgIG9wdGlvblN0YXJ0ICs9IDI7
CisKKyAgICAgICAgKnArKyA9ICdcMCc7CisgICAgICAgIG9wdGlvbnMuYXBwZW5kKG9wdGlvblN0
YXJ0KTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGZvciAoYXV0byYg
b3B0aW9uIDogb3B0aW9ucykgeworICAgICAgICBib29sIG9wdGlvblN1Y2Nlc3MgPSBzZXRPcHRp
b24ob3B0aW9uKTsKKyAgICAgICAgaWYgKCFvcHRpb25TdWNjZXNzKSB7CisgICAgICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIHNldCBvcHRpb24gOiAlc1xuIiwgb3B0aW9uKTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGR1bXBPcHRpb25z
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwogLy8gUGFyc2VzIGEgc2luZ2xl
IGNvbW1hbmQgbGluZSBvcHRpb24gaW4gdGhlIGZvcm1hdCAiPG9wdGlvbk5hbWU+PTx2YWx1ZT4i
CiAvLyAobm8gc3BhY2VzIGFsbG93ZWQpIGFuZCBzZXQgdGhlIHNwZWNpZmllZCBvcHRpb24gaWYg
YXBwcm9wcmlhdGUuCiBib29sIE9wdGlvbnM6OnNldE9wdGlvbihjb25zdCBjaGFyKiBhcmcpCkBA
IC00MjAsMTUgKzQ5NywzNSBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbihjb25zdCBjaGFyKiBh
cmcpCiAgICAgcmV0dXJuIGZhbHNlOyAvLyBObyBvcHRpb24gbWF0Y2hlZC4KIH0KIAotdm9pZCBP
cHRpb25zOjpkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxl
LCBGSUxFKiBzdHJlYW0pCit2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCisgICAgY29u
c3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIq
IG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uIHNob3dEZWZhdWx0c09wdGlvbikKK3sK
KyAgICBpZiAodGl0bGUpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodGl0bGUpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpZCA9IDA7IGlk
IDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgICAgIGlmIChzZXBhcmF0b3IgJiYgaWQp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOworICAgICAgICBkdW1wT3B0
aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBvcHRpb25IZWFk
ZXIsIG9wdGlvbkZvb3Rlciwgc2hvd0RlZmF1bHRzT3B0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQg
T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7
Ci0gICAgaWYgKHRpdGxlKQotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzXG4iLCB0aXRsZSk7
Ci0gICAgZm9yIChpbnQgaWQgPSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQrKykKLSAgICAg
ICAgZHVtcE9wdGlvbihsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9uSUQ+KGlkKSwgc3RyZWFtLCAi
ICAgIiwgIlxuIik7CisgICAgZHVtcEFsbE9wdGlvbnMoYnVpbGRlciwgRHVtcExldmVsOjpBbGws
IG51bGxwdHIsICIgIiwgbnVsbHB0ciwgbnVsbHB0ciwgRG9udFNob3dEZWZhdWx0cyk7CiB9CiAK
LXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLCBG
SUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyKQordm9p
ZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYW0sIER1bXBMZXZlbCBsZXZlbCwg
Y29uc3QgY2hhciogdGl0bGUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGR1
bXBBbGxPcHRpb25zKGJ1aWxkZXIsIGxldmVsLCB0aXRsZSwgbnVsbHB0ciwgIiAgICIsICJcbiIs
IFNob3dEZWZhdWx0cyk7CisgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLAorICAgIGNv
bnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBTaG93RGVmYXVsdHNPcHRpb24g
c2hvd0RlZmF1bHRzT3B0aW9uKQogewogICAgIGlmIChpZCA+PSBudW1iZXJPZk9wdGlvbnMpCiAg
ICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCkBAIC00NDAsMTkgKzUzNywyNCBAQCB2
b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oRHVtcExldmVsIGxldmVsCiAgICAgaWYgKGxldmVsID09
IER1bXBMZXZlbDo6T3ZlcnJpZGRlbiAmJiAhd2FzT3ZlcnJpZGRlbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZnByaW50ZihzdHJlYW0sICIlcyVzOiAiLCBoZWFkZXIsIG9wdGlvbi5uYW1lKCkp
OwotICAgIG9wdGlvbi5kdW1wKHN0cmVhbSk7CisgICAgaWYgKGhlYWRlcikKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoaGVhZGVyKTsKKyAgICBidWlsZGVyLmFwcGVuZChvcHRpb24ubmFtZSgpKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgnPScpOworICAgIG9wdGlvbi5kdW1wKGJ1aWxkZXIpOwogCi0g
ICAgaWYgKHdhc092ZXJyaWRkZW4pIHsKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIgKGRlZmF1
bHQ6ICIpOwotICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigpLmR1bXAoc3RyZWFtKTsKLSAg
ICAgICAgZnByaW50ZihzdHJlYW0sICIpIik7CisgICAgaWYgKHdhc092ZXJyaWRkZW4gJiYgKHNo
b3dEZWZhdWx0c09wdGlvbiA9PSBTaG93RGVmYXVsdHMpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgKGRlZmF1bHQ6ICIpOworICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigpLmR1bXAo
YnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpIik7CiAgICAgfQogCi0gICAgaWYg
KG5lZWRzRGVzY3JpcHRpb24pCi0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiICAgLi4uICVzIiwg
b3B0aW9uLmRlc2NyaXB0aW9uKCkpOworICAgIGlmIChuZWVkc0Rlc2NyaXB0aW9uKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAuLi4gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG9w
dGlvbi5kZXNjcmlwdGlvbigpKTsKKyAgICB9CiAKLSAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwg
Zm9vdGVyKTsKKyAgICBidWlsZGVyLmFwcGVuZChmb290ZXIpOwogfQogCiB2b2lkIE9wdGlvbnM6
OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCkBAIC00NjYsMzMgKzU2OCwzNSBAQCB2b2lkIE9w
dGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAK
LXZvaWQgT3B0aW9uOjpkdW1wKEZJTEUqIHN0cmVhbSkgY29uc3QKK3ZvaWQgT3B0aW9uOjpkdW1w
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmJvb2xUeXBlOgotICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVzIiwgbV9lbnRyeS5ib29sVmFsID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKG1fZW50cnkuYm9vbFZhbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OnVuc2lnbmVkVHlwZToKLSAgICAgICAg
ZnByaW50ZihzdHJlYW0sICIldSIsIG1fZW50cnkudW5zaWduZWRWYWwpOworICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnVuc2lnbmVkVmFsKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpkb3VibGVUeXBlOgotICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVsZiIsIG1fZW50cnkuZG91YmxlVmFsKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9lbnRyeS5kb3VibGVWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6OmludDMyVHlwZToKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIlZCIsIG1fZW50cnku
aW50MzJWYWwpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LmludDMyVmFs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpvcHRpb25SYW5nZVR5
cGU6Ci0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBtX2VudHJ5Lm9wdGlvblJhbmdlVmFs
LnJhbmdlU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5Lm9wdGlvblJh
bmdlVmFsLnJhbmdlU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6Om9wdGlvblN0cmluZ1R5cGU6IHsKICAgICAgICAgY29uc3QgY2hhciogb3B0aW9uID0g
bV9lbnRyeS5vcHRpb25TdHJpbmdWYWw7CiAgICAgICAgIGlmICghb3B0aW9uKQogICAgICAgICAg
ICAgb3B0aW9uID0gIiI7Ci0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBvcHRpb24pOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBidWlsZGVyLmFwcGVuZChvcHRp
b24pOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpnY0xvZ0xldmVsVHlwZTogewotICAgICAgICBmcHJp
bnRmKHN0cmVhbSwgIiVzIiwgR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkuZ2NMb2dM
ZXZlbFZhbCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJp
bmcobV9lbnRyeS5nY0xvZ0xldmVsVmFsKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAx
ODg1OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZ0J1aWxkZXI7Cit9Cit1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CisKIG5hbWVzcGFj
ZSBKU0MgewogCiAvLyBIb3cgZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8KQEAgLTgwLDExICs4NSwx
MyBAQCBwdWJsaWM6CiAKICAgICBib29sIGluaXQoY29uc3QgY2hhciopOwogICAgIGJvb2wgaXNJ
blJhbmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiAiPG51bGw+Ijsg
fQorICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUg
PiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9CiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKwogICAgIFJhbmdlU3RhdGUg
bV9zdGF0ZTsKICAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwogICAgIHVuc2lnbmVkIG1f
bG93TGltaXQ7CkBAIC0zNTksMTEgKzM2NiwxNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKKyAgICAvLyBQYXJzZXMgYSBzdHJp
bmcgb2Ygb3B0aW9ucyB3aGVyZSBlYWNoIG9wdGlvbiBpcyBvZiB0aGUgZm9ybWF0ICItLTxvcHRp
b25OYW1lPj08dmFsdWU+IgorICAgIC8vIGFuZCBhcmUgc2VwYXJhdGVkIGJ5IGEgc3BhY2UuIFRo
ZSBsZWFkaW5nICItLSIgaXMgb3B0aW9uYWwgYW5kIHdpbGwgYmUgaWdub3JlZC4KKyAgICBzdGF0
aWMgYm9vbCBzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdGlvbnNMaXN0KTsKKwogICAgIC8vIFBh
cnNlcyBhIHNpbmdsZSBjb21tYW5kIGxpbmUgb3B0aW9uIGluIHRoZSBmb3JtYXQgIjxvcHRpb25O
YW1lPj08dmFsdWU+IgogICAgIC8vIChubyBzcGFjZXMgYWxsb3dlZCkgYW5kIHNldCB0aGUgc3Bl
Y2lmaWVkIG9wdGlvbiBpZiBhcHByb3ByaWF0ZS4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBzZXRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxl
ID0gbnVsbHB0ciwgRklMRSogc3RyZWFtID0gc3Rkb3V0KTsKLSAgICBzdGF0aWMgdm9pZCBkdW1w
T3B0aW9uKER1bXBMZXZlbCwgT3B0aW9uSUQsIEZJTEUqIHN0cmVhbSA9IHN0ZG91dCwgY29uc3Qg
Y2hhciogaGVhZGVyID0gIiIsIGNvbnN0IGNoYXIqIGZvb3RlciA9ICIiKTsKKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25zKEZJTEUqLCBEdW1wTGV2ZWws
IGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cik7CisgICAgc3RhdGljIHZvaWQgZHVtcEFsbE9w
dGlvbnNJbkFMaW5lKFN0cmluZ0J1aWxkZXImKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogCiAgICAgLy8gRGVjbGFyZSBh
Y2Nlc3NvcnMgZm9yIGVhY2ggb3B0aW9uOgpAQCAtMzk1LDYgKzQwOCwxNiBAQCBwcml2YXRlOgog
CiAgICAgT3B0aW9ucygpOwogCisgICAgZW51bSBTaG93RGVmYXVsdHNPcHRpb24geworICAgICAg
ICBEb250U2hvd0RlZmF1bHRzLAorICAgICAgICBTaG93RGVmYXVsdHMKKyAgICB9OworICAgIHN0
YXRpYyB2b2lkIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQWxs
T3B0aW9ucyhTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBjb25zdCBjaGFyKiB0aXRsZSwKKyAg
ICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNv
bnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uKTsKKyAgICBzdGF0aWMg
dm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAorICAg
ICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3Rlciwg
U2hvd0RlZmF1bHRzT3B0aW9uKTsKKwogICAgIC8vIERlY2xhcmUgdGhlIHNpbmdsZXRvbiBpbnN0
YW5jZSBvZiB0aGUgb3B0aW9ucyBzdG9yZToKICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBFbnRy
eSBzX29wdGlvbnNbbnVtYmVyT2ZPcHRpb25zXTsKICAgICBzdGF0aWMgRW50cnkgc19kZWZhdWx0
T3B0aW9uc1tudW1iZXJPZk9wdGlvbnNdOwpAQCAtNDExLDcgKzQzNCw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBP
cHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAK
</data>
<flag name="review"
          id="284451"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259294</attachid>
            <date>2015-08-18 13:41:29 -0700</date>
            <delta_ts>2015-08-19 13:29:39 -0700</delta_ts>
            <desc>fix 4: fixed builds.</desc>
            <filename>bug-148125.patch</filename>
            <type>text/plain</type>
            <size>36051</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA4LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYWJpbGl0eSB0byBzYXZlIGFuZCByZXN0b3JlIEpTQyBvcHRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvdGVzdHMvRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5jcHA6CisgICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAg
ICAgICAgLSBFbXBsb3kgdGhlIG5ldyBvcHRpb25zIGdldHRlci9zZXR0ZXIgdG8gcnVuIHdhdGNo
ZG9nIHRlc3RzIGZvciBlYWNoIG9mIHRoZQorICAgICAgICAgIGV4ZWN1dGlvbiBlbmdpbmUgdGll
cnMuCisgICAgICAgIC0gQWxzbyBhbHRlcmVkIHRoZSB0ZXN0IHNjcmlwdHMgdG8gYmUgaW4gYSBm
dW5jdGlvbiBpbnN0ZWFkIG9mIGdsb2JhbCBjb2RlLgorICAgICAgICAgIFRoaXMgaXMgb25lIG9m
IDIgY2hhbmdlcyBuZWVkZWQgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5IHRvIGJlIEZUTCBj
b21waWxlZC4KKyAgICAgICAgICBUaGUgb3RoZXIgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGNvbXBp
bGluZyBDaGVja1dhdGNoZG9nVGltZXIgaW4gdGhlIEZUTCAod2hpY2gKKyAgICAgICAgICB3aWxs
IGJlIGFkZHJlc3NlZCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgLSBBZGQgdGhl
IGFiaWxpdHkgdG8gY2xlYXIgYSBzdHJpbmcgb3B0aW9uIHdpdGggYSBudWxscHRyIHZhbHVlLgor
ICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIHRvIHJlc3RvcmUgYSBkZWZhdWx0IHN0cmluZyBvcHRp
b24gdmFsdWUgd2hpY2ggbWF5IGJlIG51bGwuCisKKyAgICAgICAgKEpTQzo6T3B0aW9uUmFuZ2U6
OmluaXQpOgorICAgICAgICAtIEFkZCB0aGUgYWJpbGl0eSB0byBjbGVhciBhIHJhbmdlIG9wdGlv
biB3aXRoIGEgbnVsbCB2YWx1ZS4KKyAgICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byByZXN0b3Jl
IGEgZGVmYXVsdCByYW5nZSBvcHRpb24gdmFsdWUgd2hpY2ggbWF5IGJlIG51bGwuCisKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1
bXBPcHRpb25zSWZOZWVkZWQpOgorICAgICAgICAtIEZhY3RvciBjb2RlIHRvIGR1bXAgb3B0aW9u
cyBvdXQgdG8gZHVtcE9wdGlvbnNJZk5lZWRlZCgpIHNpbmNlIHdlIHdpbGwgbmVlZAorICAgICAg
ICAgIHRoYXQgbG9naWMgZWxzZXdoZXJlLgorCisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9w
dGlvbnMpOgorICAgICAgICAtIFBhcnNlIGFuIG9wdGlvbnMgc3RyaW5nIGFuZCBzZXQgZWFjaCBv
ZiB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuCisKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6ZHVtcEFs
bE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wT3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0
aW9uOjpkdW1wKToKKyAgICAgICAgLSBSZWZhY3RvcmVkIHNvIHRoYXQgdGhlIHVuZGVybHlpbmcg
ZHVtcGVyIGR1bXBzIHRvIGEgU3RyaW5nQnVpbGRlciBpbnN0ZWFkIG9mCisgICAgICAgICAgc3Rk
ZXJyLiAgVGhpcyBsZXRzIHVzIHJldXNlIHRoaXMgY29kZSB0byBzZXJpYWxpemUgYWxsIHRoZSBv
cHRpb25zIGludG8gYQorICAgICAgICAgIHNpbmdsZSBzdHJpbmcgZm9yIGR1bXBBbGxPcHRpb25z
SW5BTGluZSgpLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6
Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyk6CisKIDIwMTUtMDgtMTggIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBDTE9PUCBidWls
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODg1OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw3ICsxNTUwLDcg
QEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZwogICAgICAgICBtX2Fy
Z3VtZW50cy5hcHBlbmQoYXJndltpXSk7CiAKICAgICBpZiAobmVlZFRvRHVtcE9wdGlvbnMpCi0g
ICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoSlNDOjpPcHRpb25zOjpEdW1wTGV2
ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiLCBzdGRlcnIpOworICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKHN0ZGVyciwgSlNDOjpPcHRpb25zOjpEdW1w
TGV2ZWw6OlZlcmJvc2UsICJBbGwgSlNDIHJ1bnRpbWUgb3B0aW9uczoiKTsKICAgICBKU0M6Ok9w
dGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogICAgIGlmIChuZWVkVG9FeGl0KQog
ICAgICAgICBqc2NFeGl0KEVYSVRfU1VDQ0VTUyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJ
KHJldmlzaW9uIDE4ODU5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhl
Y3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4ZWN1dGlvblRpbWVMaW1pdFRlc3Qu
aCIKIAorI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0NvbnRl
eHRSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDo6Y2hyb25vOwordXNpbmcgSlNDOjpPcHRpb25zOwogCiBzdGF0aWMgSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQgPSBudWxscHRyOwogCkBAIC03OCwxNTkgKzgyLDIzNCBAQCBzdGF0aWMg
Ym9vbCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjayhKU0NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3N0cnVjdCBUaWVyT3B0aW9ucyB7CisgICAgY29uc3QgY2hhciogdGllcjsKKyAgICB1bnNpZ25l
ZCB0aW1lTGltaXRBZGp1c3RtZW50TWlsbGlzOworICAgIGNvbnN0IGNoYXIqIG9wdGlvbnNTdHI7
Cit9OwogCiBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiB7Ci0gICAgY29udGV4dCA9IEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0ciwgbnVsbHB0cik7CisgICAgc3RhdGlj
IGNvbnN0IFRpZXJPcHRpb25zIHRpZXJPcHRpb25zTGlzdFtdID0geworICAgICAgICB7ICJMTElO
VCIsICAgIDAsICAgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUg
LS11c2VKSVQ9ZmFsc2UiIH0sCisgICAgICAgIHsgIkJhc2VsaW5lIiwgMCwgICAiLS1lbmFibGVD
b25jdXJyZW50SklUPWZhbHNlIC0tdXNlTExJbnQ9dHJ1ZSAtLXVzZUpJVD10cnVlIC0tdXNlREZH
SklUPWZhbHNlIiB9LAorICAgICAgICB7ICJERkciLCAgICAgIDAsICAgIi0tZW5hYmxlQ29uY3Vy
cmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAtLXVzZURGR0pJVD10
cnVlIC0tdXNlRlRMSklUPWZhbHNlIiB9LAorICAgICAgICB7ICJGVEwiLCAgICAgIDIwMCwgIi0t
ZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXVzZUxMSW50PXRydWUgLS11c2VKSVQ9dHJ1ZSAt
LXVzZURGR0pJVD10cnVlIC0tdXNlRlRMSklUPXRydWUiIH0sCisgICAgfTsKKyAgICAKKyAgICBi
b29sIGZhaWxlZCA9IGZhbHNlOwogCi0gICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3Vw
ID0gSlNDb250ZXh0R2V0R3JvdXAoY29udGV4dCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2Jq
ZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOwotICAgIEFTU0VSVChKU1Zh
bHVlSXNPYmplY3QoY29udGV4dCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOyAvLyBFbnN1cmUgb3B0aW9u
cyBpcyBpbml0aWFsaXplZCBmaXJzdC4KIAotICAgIEpTVmFsdWVSZWYgdiA9IG51bGxwdHI7Ci0g
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwotICAgIGJvb2wgZmFpbGVkID0gZmFs
c2U7CisgICAgZm9yIChhdXRvIHRpZXJPcHRpb25zIDogdGllck9wdGlvbnNMaXN0KSB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgc2F2ZWRPcHRpb25zQnVpbGRlcjsKKyAgICAgICAgT3B0aW9uczo6
ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9uc0J1aWxkZXIpOwogCi0gICAgSlNTdHJp
bmdSZWYgY3VycmVudENQVVRpbWVTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Y3VycmVudENQVVRpbWUiKTsKLSAgICBKU09iamVjdFJlZiBjdXJyZW50Q1BVVGltZUZ1bmN0aW9u
ID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgY3VycmVudENQVVRp
bWVTdHIsIGN1cnJlbnRDUFVUaW1lQXNKU0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIEpTT2JqZWN0
U2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50Q1BVVGltZVN0ciwgY3Vy
cmVudENQVVRpbWVGdW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsK
LSAgICBKU1N0cmluZ1JlbGVhc2UoY3VycmVudENQVVRpbWVTdHIpOwotICAgIAotICAgIC8qIFRl
c3Qgc2NyaXB0IHRpbWVvdXQ6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7Ci0g
ICAgewotICAgICAgICBjb25zdCBjaGFyKiBsb29wRm9yZXZlclNjcmlwdCA9ICJ2YXIgc3RhcnRU
aW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYgKGN1cnJlbnRDUFVUaW1l
KCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSAiOwotICAgICAgICBKU1N0cmluZ1JlZiBz
Y3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29wRm9yZXZlclNjcmlwdCk7
Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIHNob3VsZFRlcm1pbmF0ZUNh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgICAgIGF1dG8gc3RhcnRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0
LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKLSAgICAgICAgYXV0byBlbmRUaW1l
ID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICgoKGVuZFRpbWUgLSBz
dGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKDE1MCkpICYmIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
V2FzQ2FsbGVkKQotICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiBzY3JpcHQgdGltZWQgb3V0IGFz
IGV4cGVjdGVkLlxuIik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCEoKGVuZFRp
bWUgLSBzdGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKDE1MCkpKQotICAgICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogc2NyaXB0IGRpZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAg
ICAgICAgICAgIGlmICghc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNh
bGxlZC5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKCFleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHByaW50ZigiRkFJTDog
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIpOwotICAgICAg
ICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBUZXN0
IHRoZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxk
IE5PVCBiZSBjYXRjaGFibGU6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCAwLjEwZiwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIDApOwot
ICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogbG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0
VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGlmIChjdXJyZW50
Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjE1MCkgYnJlYWs7IH0gfSBjYXRjaChlKSB7IH0iOwot
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhsb29wRm9yZXZlclNjcmlwdCk7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAg
ICAgIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgICAgIGF1
dG8gc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVT
Y3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKKyAgICAgICAgT3B0aW9u
czo6c2V0T3B0aW9ucyh0aWVyT3B0aW9ucy5vcHRpb25zU3RyKTsKICAgICAgICAgCi0gICAgICAg
IGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcygxNTApKSB8fCAhc2hv
dWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpIHsKLSAgICAgICAgICAgIGlmICghKChlbmRU
aW1lIC0gc3RhcnRUaW1lKSA8IG1pbGxpc2Vjb25kcygxNTApKSkKLSAgICAgICAgICAgICAgICBw
cmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkLlxuIik7Ci0g
ICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQotICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBj
YWxsZWQuXG4iKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IFRl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhwZWN0ZWQu
XG4iKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcmludGYoIkZBSUw6IFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIGNhdWdodC5cbiIpOwotICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBUZXN0IHNjcmlwdCB0aW1l
b3V0IHdpdGggbm8gY2FsbGJhY2s6ICovCi0gICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25U
aW1lTGltaXQoY29udGV4dEdyb3VwLCAuMTBmLCAwLCAwKTsKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGxvb3BGb3JldmVyU2NyaXB0ID0gInZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOyB3aGlsZSAodHJ1ZSkgeyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+IC4x
NTApIGJyZWFrOyB9ICI7Ci0gICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGxvb3BGb3JldmVyU2NyaXB0KTsKLSAgICAgICAgZXhjZXB0aW9u
ID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOwot
ICAgICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51
bGxwdHIsIDEsICZleGNlcHRpb24pOwotICAgICAgICBhdXRvIGVuZFRpbWUgPSBjdXJyZW50Q1BV
VGltZSgpOworICAgICAgICB1bnNpZ25lZCB0aWVyQWRqdXN0bWVudE1pbGxpcyA9IHRpZXJPcHRp
b25zLnRpbWVMaW1pdEFkanVzdG1lbnRNaWxsaXM7CisgICAgICAgIGRvdWJsZSB0aW1lTGltaXQ7
CisKKyAgICAgICAgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAobnVsbHB0
ciwgbnVsbHB0cik7CisKKyAgICAgICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwID0g
SlNDb250ZXh0R2V0R3JvdXAoY29udGV4dCk7CisgICAgICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9i
amVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAgICAgICAgQVNTRVJU
KEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBnbG9iYWxPYmplY3QpKTsKKworICAgICAgICBKU1Zh
bHVlUmVmIHYgPSBudWxscHRyOworICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisKKyAgICAgICAgSlNTdHJpbmdSZWYgY3VycmVudENQVVRpbWVTdHIgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiY3VycmVudENQVVRpbWUiKTsKKyAgICAgICAgSlNPYmplY3RS
ZWYgY3VycmVudENQVVRpbWVGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUFzSlNGdW5jdGlv
bkNhbGxiYWNrKTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxP
YmplY3QsIGN1cnJlbnRDUFVUaW1lU3RyLCBjdXJyZW50Q1BVVGltZUZ1bmN0aW9uLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOworICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY3Vy
cmVudENQVVRpbWVTdHIpOwogICAgICAgICAKLSAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0
VGltZSkgPCBtaWxsaXNlY29uZHMoMTUwKSkgJiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXND
YWxsZWQpCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IHNjcmlwdCB0aW1lZCBvdXQgYXMgZXhw
ZWN0ZWQgd2hlbiBubyBjYWxsYmFjayBpcyBzcGVjaWZpZWQuXG4iKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoISgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHMo
MTUwKSkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgZGlkIG5vdCB0aW1l
IG91dCBhcyBleHBlY3RlZCB3aGVuIG5vIGNhbGxiYWNrIGlzIHNwZWNpZmllZC5cbiIpOwotICAg
ICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dDog
Ki8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50TWlsbGlzKSAvIDEw
MDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4
dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsKKyAgICAgICAg
eworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQg
PSAxNTAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKworICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciBzY3JpcHRCdWlsZGVyOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoImZ1bmN0
aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdoaWxlICh0cnVl
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkg
LSBzdGFydFRpbWUgPiAiKTsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkIC8gMTAwMC4wKTsKKyAgICAgICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAg
ICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNj
cmlwdEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0Nh
bGxlZCA9IGZhbHNlOworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBu
dWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGlt
ZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisKKyAgICAgICAgICAgIGlmICgoKGVuZFRpbWUgLSBzdGFy
dFRpbWUpIDwgbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkg
JiYgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCisgICAgICAgICAgICAgICAgcHJp
bnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZWQgb3V0IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlv
bnMudGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoKGVuZFRp
bWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhh
dmVGaXJlZCkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IGRp
ZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1lb3V0IGNhbGxiYWNrIHdh
cyBub3QgY2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFp
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KCFleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVy
KTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duLlxu
Iik7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworCisgICAgICAgIC8qIFRlc3QgdGhlIHNj
cmlwdCB0aW1lb3V0J3MgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiBzaG91bGQgTk9UIGJl
IGNhdGNoYWJsZTogKi8KKyAgICAgICAgdGltZUxpbWl0ID0gKDEwMCArIHRpZXJBZGp1c3RtZW50
TWlsbGlzKSAvIDEwMDAuMDsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQsIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAw
KTsKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQgPSAxNTAgKyB0aWVyQWRqdXN0bWVudE1pbGxpczsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOworICAgICAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmQoImZ1bmN0aW9uIGZvbygpIHsgdmFyIHN0YXJ0VGltZSA9IGN1cnJl
bnRDUFVUaW1lKCk7IHRyeSB7IHdoaWxlICh0cnVlKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDsgaSsrKTsgaWYgKGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAiKTsKKyAgICAgICAg
ICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTnVtYmVyKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2
ZUZpcmVkIC8gMTAwMC4wKTsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCIpIGJy
ZWFrOyB9IH0gY2F0Y2goZSkgeyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisgICAgICAgICAgICBzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNl
OworCisgICAgICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAg
ICAgICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51
bGxwdHIsIDEsICZleGNlcHRpb24pOworICAgICAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVu
dENQVVRpbWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0
YXJ0VGltZSkgPj0gbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVk
KSkgfHwgIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEoKGVuZFRpbWUgLSBzdGFydFRpbWUpIDwgbWlsbGlzZWNvbmRzKHRpbWVBZnRlcldh
dGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJ
TDogJXMgc2NyaXB0IGRpZCBub3QgdGltZSBvdXQgYXMgZXhwZWN0ZWQuXG4iLCB0aWVyT3B0aW9u
cy50aWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrV2Fz
Q2FsbGVkKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCB0aW1l
b3V0IGNhbGxiYWNrIHdhcyBub3QgY2FsbGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6
ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3
YXMgY2F1Z2h0LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBU
ZXN0IHNjcmlwdCB0aW1lb3V0IGNhbmNlbGxhdGlvbjogKi8KLSAgICBKU0NvbnRleHRHcm91cFNl
dEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIDAuMTBmLCBjYW5jZWxUZXJtaW5hdGVD
YWxsYmFjaywgMCk7Ci0gICAgewotICAgICAgICBjb25zdCBjaGFyKiBsb29wRm9yZXZlclNjcmlw
dCA9ICJ2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgaWYg
KGN1cnJlbnRDUFVUaW1lKCkgLSBzdGFydFRpbWUgPiAuMTUwKSBicmVhazsgfSAiOwotICAgICAg
ICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhsb29w
Rm9yZXZlclNjcmlwdCk7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGF1
dG8gc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKLSAgICAgICAgdiA9IEpTRXZhbHVhdGVT
Y3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgYXV0byBlbmRUaW1lID0gY3VycmVudENQVVRpbWUoKTsKICAgICAgICAgCi0gICAg
ICAgIGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcygxNTApKSAmJiBj
YW5jZWxUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCAmJiAhZXhjZXB0aW9uKQotICAgICAgICAg
ICAgcHJpbnRmKCJQQVNTOiBzY3JpcHQgdGltZW91dCB3YXMgY2FuY2VsbGVkIGFzIGV4cGVjdGVk
LlxuIik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0
VGltZSkgPCBtaWxsaXNlY29uZHMoMTUwKSkgfHwgZXhjZXB0aW9uKQotICAgICAgICAgICAgICAg
IHByaW50ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgd2FzIG5vdCBjYW5jZWxsZWQuXG4iKTsKLSAg
ICAgICAgICAgIGlmICghY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNh
bGxlZC5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgLyogVGVzdCBz
Y3JpcHQgdGltZW91dCB3aXRoIG5vIGNhbGxiYWNrOiAqLworICAgICAgICB0aW1lTGltaXQgPSAo
MTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRleHRH
cm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgMCwgMCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxk
SGF2ZUZpcmVkID0gMTUwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50
Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7
IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZE51bWJlcih0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCAv
IDEwMDAuMCk7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZCgiKSBicmVhazsgfSB9
IGZvbygpOyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBleGNlcHRpb24gPSBudWxscHRyOworICAgICAg
ICAgICAgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKworICAgICAg
ICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAgdiA9
IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAm
ZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpIDwg
bWlsbGlzZWNvbmRzKHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkKSkgJiYgIXNob3Vs
ZFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkKQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFT
UzogJXMgc2NyaXB0IHRpbWVkIG91dCBhcyBleHBlY3RlZCB3aGVuIG5vIGNhbGxiYWNrIGlzIHNw
ZWNpZmllZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+PSBtaWxsaXNlY29uZHModGlt
ZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAgICAgICAgICAgICAgICBwcmlu
dGYoIkZBSUw6ICVzIHNjcmlwdCBkaWQgbm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkIHdoZW4gbm8g
Y2FsbGJhY2sgaXMgc3BlY2lmaWVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCBj
YWxsZWQgc3RhbGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHByaW50Zigi
RkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIs
IHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChleGNlcHRpb24pIHsK
LSAgICAgICAgICAgIHByaW50ZigiRkFJTDogVW5leHBlY3RlZCBUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uIHRocm93bi5cbiIpOwotICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAg
ICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCBjYW5jZWxsYXRpb246ICovCisgICAgICAgIHRpbWVM
aW1pdCA9ICgxMDAgKyB0aWVyQWRqdXN0bWVudE1pbGxpcykgLyAxMDAwLjA7CisgICAgICAgIEpT
Q29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0
LCBjYW5jZWxUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMTUwICsgdGllckFkanVz
dG1lbnRNaWxsaXM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2Ny
aXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKCJmdW5jdGlvbiBm
b28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgpOyB3aGlsZSAodHJ1ZSkgeyBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3Rh
cnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZE51bWJlcih0aW1l
QWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCAvIDEwMDAuMCk7CisgICAgICAgICAgICBzY3Jp
cHRCdWlsZGVyLmFwcGVuZCgiKSBicmVhazsgfSB9IGZvbygpOyIpOworCisgICAgICAgICAgICBK
U1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHRC
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBleGNlcHRpb24g
PSBudWxscHRyOworICAgICAgICAgICAgY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGltZSgp
OworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxs
cHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5kVGltZSA9
IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoKGVuZFRp
bWUgLSBzdGFydFRpbWUpID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhh
dmVGaXJlZCkpICYmIGNhbmNlbFRlcm1pbmF0ZUNhbGxiYWNrV2FzQ2FsbGVkICYmICFleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAlcyBzY3JpcHQgdGltZW91dCB3YXMg
Y2FuY2VsbGVkIGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA8IG1p
bGxpc2Vjb25kcyh0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhhdmVGaXJlZCkpIHx8IGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCB3
YXMgbm90IGNhbmNlbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAg
IGlmICghY2FuY2VsVGVybWluYXRlQ2FsbGJhY2tXYXNDYWxsZWQpCisgICAgICAgICAgICAgICAg
ICAgIHByaW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxs
ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBVbmV4cGVjdGVkIFRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24gdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGV4dGVuc2lvbjogKi8KLSAgICBK
U0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIDAuMTAwZiwg
ZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOwotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciog
bG9vcEZvcmV2ZXJTY3JpcHQgPSAidmFyIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7IHdo
aWxlICh0cnVlKSB7IGlmIChjdXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gLjUwMCkgYnJl
YWs7IH0gIjsKLSAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcobG9vcEZvcmV2ZXJTY3JpcHQpOwotICAgICAgICBleGNlcHRpb24gPSBudWxs
cHRyOwotICAgICAgICBhdXRvIHN0YXJ0VGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7Ci0gICAgICAg
IHYgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgbnVsbHB0ciwgbnVsbHB0ciwg
MSwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIGF1dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7
Ci0gICAgICAgIGF1dG8gZGVsdGFUaW1lID0gZW5kVGltZSAtIHN0YXJ0VGltZTsKICAgICAgICAg
Ci0gICAgICAgIGlmICgoZGVsdGFUaW1lID49IG1pbGxpc2Vjb25kcygzMDApKSAmJiAoZGVsdGFU
aW1lIDwgbWlsbGlzZWNvbmRzKDUwMCkpICYmIChleHRlbmRUZXJtaW5hdGVDYWxsYmFja0NhbGxl
ZCA9PSAyKSAmJiBleGNlcHRpb24pCi0gICAgICAgICAgICBwcmludGYoIlBBU1M6IHNjcmlwdCB0
aW1lb3V0IHdhcyBleHRlbmRlZCBhcyBleHBlY3RlZC5cbiIpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChkZWx0YVRpbWUgPCBtaWxsaXNlY29uZHMoMjAwKSkKLSAgICAgICAgICAg
ICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCB0aW1lb3V0IHdhcyBub3QgZXh0ZW5kZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGRlbHRhVGltZSA+PSBtaWxsaXNlY29u
ZHMoNTAwKSkKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlwdCBkaWQgbm90IHRp
bWVvdXQuXG4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGV4dGVuZFRlcm1pbmF0
ZUNhbGxiYWNrQ2FsbGVkIDwgMSkKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6IHNjcmlw
dCB0aW1lb3V0IGNhbGxiYWNrIHdhcyBub3QgY2FsbGVkLlxuIik7Ci0gICAgICAgICAgICBpZiAo
ZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPCAyKQotICAgICAgICAgICAgICAgIHByaW50
ZigiRkFJTDogc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYWZ0ZXIgdGlt
ZW91dCBleHRlbnNpb24uXG4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uIHdhcyBub3QgdGhyb3duIGR1cmluZyB0aW1lb3V0IGV4dGVuc2lvbiB0ZXN0Llxu
Iik7CisgICAgICAgIC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgZXh0ZW5zaW9uOiAqLworICAgICAg
ICB0aW1lTGltaXQgPSAoMTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAg
ICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRp
bWVMaW1pdCwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOworICAgICAgICB7CisgICAgICAg
ICAgICB1bnNpZ25lZCB0aW1lQmVmb3JlRXh0ZW5kZWREZWFkbGluZSA9IDIwMCArIHRpZXJBZGp1
c3RtZW50TWlsbGlzOworICAgICAgICAgICAgdW5zaWduZWQgdGltZUFmdGVyRXh0ZW5kZWREZWFk
bGluZSA9IDM1MCArIHRpZXJBZGp1c3RtZW50TWlsbGlzOworICAgICAgICAgICAgdW5zaWduZWQg
bWF4QnVzeUxvb3BUaW1lID0gNTAwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisKKyAgICAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNjcmlwdEJ1aWxk
ZXIuYXBwZW5kKCJmdW5jdGlvbiBmb28oKSB7IHZhciBzdGFydFRpbWUgPSBjdXJyZW50Q1BVVGlt
ZSgpOyB3aGlsZSAodHJ1ZSkgeyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKyk7IGlmIChj
dXJyZW50Q1BVVGltZSgpIC0gc3RhcnRUaW1lID4gIik7CisgICAgICAgICAgICBzY3JpcHRCdWls
ZGVyLmFwcGVuZE51bWJlcihtYXhCdXN5TG9vcFRpbWUgLyAxMDAwLjApOyAvLyBpbiBzZWNvbmRz
LgorICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoIikgYnJlYWs7IH0gfSBmb28oKTsi
KTsKKworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoc2NyaXB0QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGV4dGVuZFRlcm1pbmF0
ZUNhbGxiYWNrQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBjdXJy
ZW50Q1BVVGltZSgpOworICAgICAgICAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwg
c2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGF1
dG8gZW5kVGltZSA9IGN1cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICBhdXRvIGRlbHRhVGlt
ZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoKGRlbHRhVGltZSA+PSBtaWxsaXNlY29uZHModGlt
ZUJlZm9yZUV4dGVuZGVkRGVhZGxpbmUpKSAmJiAoZGVsdGFUaW1lIDwgbWlsbGlzZWNvbmRzKHRp
bWVBZnRlckV4dGVuZGVkRGVhZGxpbmUpKSAmJiAoZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2tDYWxs
ZWQgPT0gMikgJiYgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFTUzogJXMg
c2NyaXB0IHRpbWVvdXQgd2FzIGV4dGVuZGVkIGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMu
dGllcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVsdGFUaW1l
IDwgbWlsbGlzZWNvbmRzKHRpbWVCZWZvcmVFeHRlbmRlZERlYWRsaW5lKSkKKyAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCB3YXMgbm90IGV4dGVuZGVk
IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGVsdGFUaW1lID49IG1pbGxpc2Vjb25kcyh0aW1lQWZ0ZXJFeHRlbmRlZERlYWRsaW5l
KSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgZGlkIG5vdCB0
aW1lb3V0LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkIDwgMSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMg
bm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIGlmIChl
eHRlbmRUZXJtaW5hdGVDYWxsYmFja0NhbGxlZCA8IDIpCisgICAgICAgICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogJXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYWZ0
ZXIgdGltZW91dCBleHRlbnNpb24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duIGR1cmluZyB0aW1lb3V0IGV4dGVuc2lvbiB0ZXN0LlxuIiwgdGllck9wdGlvbnMudGll
cik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UoY29udGV4dCk7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CisK
KyAgICAgICAgT3B0aW9uczo6c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KKyAgICAKICAgICByZXR1cm4gZmFpbGVkOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9u
IDE4ODU5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgT1MoREFS
V0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgpAQCAt
ODQsNiArODUsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wCiAK
IHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciomIHZhbHVl
KQogeworICAgIGlmICghc3RybGVuKHN0cmluZykpCisgICAgICAgIHN0cmluZyA9IG51bGxwdHI7
CiAgICAgdmFsdWUgPSBzdHJpbmc7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNDksNiArMTUy
LDggQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogI2VuZGlmCiB9
CiAKK2NvbnN0IGNoYXIqIGNvbnN0IE9wdGlvblJhbmdlOjpzX251bGxSYW5nZVN0ciA9ICI8bnVs
bD4iOworCiBib29sIE9wdGlvblJhbmdlOjppbml0KGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKQog
ewogICAgIC8vIHJhbmdlU3RyaW5nIHNob3VsZCBiZSBpbiB0aGUgZm9ybSBvZiBbIV08bG93Pls6
PGhpZ2g+XQpAQCAtMTU2LDE0ICsxNjEsMTYgQEAgYm9vbCBPcHRpb25SYW5nZTo6aW5pdChjb25z
dCBjaGFyKiByYW5nZQogCiAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKIAotICAgIGlmIChtX3N0
YXRlID4gVW5pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBpZiAoIXJh
bmdlU3RyaW5nKSB7CiAgICAgICAgIG1fc3RhdGUgPSBJbml0RXJyb3I7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIXN0cmNtcChyYW5nZVN0cmluZywgc19udWxsUmFu
Z2VTdHIpKSB7CisgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgbV9yYW5nZVN0cmluZyA9IHJhbmdlU3RyaW5nOwog
CiAgICAgaWYgKCpyYW5nZVN0cmluZyA9PSAnIScpIHsKQEAgLTM2MCwzMiArMzY3LDEwMiBAQCB2
b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSA+PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb24oKSk7CiAgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dGhyZXNob2xkRm9y
T3B0aW1pemVBZnRlcldhcm1VcCgpID49IDApOwogCi0gICAgICAgICAgICBpZiAoT3B0aW9uczo6
c2hvd09wdGlvbnMoKSkgewotICAgICAgICAgICAgICAgIER1bXBMZXZlbCBsZXZlbCA9IHN0YXRp
Y19jYXN0PER1bXBMZXZlbD4oT3B0aW9uczo6c2hvd09wdGlvbnMoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxldmVsID4gRHVtcExldmVsOjpWZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBs
ZXZlbCA9IER1bXBMZXZlbDo6VmVyYm9zZTsKLQotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRpdGxlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEdW1wTGV2ZWw6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpPdmVycmlkZGVuOgotICAgICAg
ICAgICAgICAgICAgICB0aXRsZSA9ICJPdmVycmlkZGVuIEpTQyBvcHRpb25zOiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRHVtcExldmVsOjpBbGw6
Ci0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mgb3B0aW9uczoiOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIER1bXBMZXZlbDo6VmVy
Ym9zZToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiQWxsIEpTQyBvcHRpb25zIHdpdGgg
ZGVzY3JpcHRpb25zOiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBkdW1wQWxsT3B0aW9ucyhsZXZlbCwgdGl0bGUpOwotICAg
ICAgICAgICAgfQotCisgICAgICAgICAgICBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgICAg
ICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKICAgICAgICAgfSk7CiB9CiAKK3ZvaWQg
T3B0aW9uczo6ZHVtcE9wdGlvbnNJZk5lZWRlZCgpCit7CisgICAgaWYgKE9wdGlvbnM6OnNob3dP
cHRpb25zKCkpIHsKKyAgICAgICAgRHVtcExldmVsIGxldmVsID0gc3RhdGljX2Nhc3Q8RHVtcExl
dmVsPihPcHRpb25zOjpzaG93T3B0aW9ucygpKTsKKyAgICAgICAgaWYgKGxldmVsID4gRHVtcExl
dmVsOjpWZXJib3NlKQorICAgICAgICAgICAgbGV2ZWwgPSBEdW1wTGV2ZWw6OlZlcmJvc2U7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY29uc3QgY2hhciogdGl0bGUgPSBudWxscHRyOworICAgICAg
ICBzd2l0Y2ggKGxldmVsKSB7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpOb25lOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpPdmVycmlkZGVuOgorICAgICAg
ICAgICAgdGl0bGUgPSAiT3ZlcnJpZGRlbiBKU0Mgb3B0aW9uczoiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRHVtcExldmVsOjpBbGw6CisgICAgICAgICAgICB0aXRsZSA9ICJB
bGwgSlNDIG9wdGlvbnM6IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIER1bXBM
ZXZlbDo6VmVyYm9zZToKKyAgICAgICAgICAgIHRpdGxlID0gIkFsbCBKU0Mgb3B0aW9ucyB3aXRo
IGRlc2NyaXB0aW9uczoiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGR1bXBBbGxPcHRpb25zKGJ1aWxkZXIs
IGxldmVsLCB0aXRsZSwgbnVsbHB0ciwgIiAgICIsICJcbiIsIFNob3dEZWZhdWx0cyk7CisgICAg
ICAgIGRhdGFMb2coYnVpbGRlci50b1N0cmluZygpKTsKKyAgICB9Cit9CisKK2Jvb2wgT3B0aW9u
czo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHRpb25zU3RyKQoreworICAgIFZlY3RvcjxjaGFy
Kj4gb3B0aW9uczsKKworICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ob3B0aW9uc1N0cik7Cisg
ICAgY2hhciogb3B0aW9uc1N0ckNvcHkgPSBXVEY6OmZhc3RTdHJEdXAob3B0aW9uc1N0cik7Cisg
ICAgY2hhciogZW5kID0gb3B0aW9uc1N0ckNvcHkgKyBsZW5ndGg7CisgICAgY2hhciogcCA9IG9w
dGlvbnNTdHJDb3B5OworCisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgY2hhciogb3B0
aW9uU3RhcnQgPSBwOworICAgICAgICBwID0gc3Ryc3RyKHAsICI9Iik7CisgICAgICAgIGlmICgh
cCkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIic9JyBub3QgZm91bmQgaW4gb3B0aW9uIHN0cmlu
ZzogJXBcbiIsIG9wdGlvblN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBwKys7CisKKyAgICAgICAgY2hhciogdmFsdWVCZWdpbiA9IHA7CisgICAg
ICAgIGJvb2wgaGFzU3RyaW5nVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgY29uc3QgaW50IG1pblN0
cmluZ0xlbmd0aCA9IDI7IC8vIFRoZSBtaW4gaXMgYW4gZW1wdHkgc3RyaW5nIGkuZS4gMiBkb3Vi
bGUgcXVvdGVzLgorICAgICAgICBpZiAoKHAgKyBtaW5TdHJpbmdMZW5ndGggPCBlbmQpICYmICgq
cCA9PSAnIicpKSB7CisgICAgICAgICAgICBwID0gc3Ryc3RyKHAgKyAxLCAiXCIiKTsKKyAgICAg
ICAgICAgIGlmICghcCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJNaXNzaW5nIHRyYWls
aW5nICdcIicgaW4gb3B0aW9uIHN0cmluZzogJXBcbiIsIG9wdGlvblN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVuZCBvZiBzdHJpbmcgbm90IGZvdW5kLgorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaGFzU3RyaW5nVmFsdWUgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgcCA9IHN0cnN0cihwLCAiICIpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAg
ICBwID0gZW5kOyAvLyBObyBtb3JlICIgIiBzZXBhcmF0b3IuIEhlbmNlLCB0aGlzIGlzIHRoZSBs
YXN0IGFyZy4KKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgd2VsbC1mb3JtZWQgc3RyaW5nIHZh
bHVlLCBzdHJpcCB0aGUgcXVvdGVzLgorICAgICAgICBpZiAoaGFzU3RyaW5nVmFsdWUpIHsKKyAg
ICAgICAgICAgIGNoYXIqIHZhbHVlRW5kID0gcDsKKyAgICAgICAgICAgIEFTU0VSVCgoKnZhbHVl
QmVnaW4gPT0gJyInKSAmJiAoKHZhbHVlRW5kIC0gdmFsdWVCZWdpbikgPj0gbWluU3RyaW5nTGVu
Z3RoKSAmJiAodmFsdWVFbmRbLTFdID09ICciJykpOworICAgICAgICAgICAgbWVtbW92ZSh2YWx1
ZUJlZ2luLCB2YWx1ZUJlZ2luICsgMSwgdmFsdWVFbmQgLSB2YWx1ZUJlZ2luIC0gbWluU3RyaW5n
TGVuZ3RoKTsKKyAgICAgICAgICAgIHZhbHVlRW5kWy1taW5TdHJpbmdMZW5ndGhdID0gJ1wwJzsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFN0cmlwIGxlYWRpbmcgLS0gaWYgcHJlc2VudC4KKyAg
ICAgICAgaWYgKChwIC0gIG9wdGlvblN0YXJ0ID4gMikgJiYgb3B0aW9uU3RhcnRbMF0gPT0gJy0n
ICYmIG9wdGlvblN0YXJ0WzFdID09ICctJykKKyAgICAgICAgICAgIG9wdGlvblN0YXJ0ICs9IDI7
CisKKyAgICAgICAgKnArKyA9ICdcMCc7CisgICAgICAgIG9wdGlvbnMuYXBwZW5kKG9wdGlvblN0
YXJ0KTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGZvciAoYXV0byYg
b3B0aW9uIDogb3B0aW9ucykgeworICAgICAgICBib29sIG9wdGlvblN1Y2Nlc3MgPSBzZXRPcHRp
b24ob3B0aW9uKTsKKyAgICAgICAgaWYgKCFvcHRpb25TdWNjZXNzKSB7CisgICAgICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIHNldCBvcHRpb24gOiAlc1xuIiwgb3B0aW9uKTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGR1bXBPcHRpb25z
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwogLy8gUGFyc2VzIGEgc2luZ2xl
IGNvbW1hbmQgbGluZSBvcHRpb24gaW4gdGhlIGZvcm1hdCAiPG9wdGlvbk5hbWU+PTx2YWx1ZT4i
CiAvLyAobm8gc3BhY2VzIGFsbG93ZWQpIGFuZCBzZXQgdGhlIHNwZWNpZmllZCBvcHRpb24gaWYg
YXBwcm9wcmlhdGUuCiBib29sIE9wdGlvbnM6OnNldE9wdGlvbihjb25zdCBjaGFyKiBhcmcpCkBA
IC00MjAsMTUgKzQ5NywzNSBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbihjb25zdCBjaGFyKiBh
cmcpCiAgICAgcmV0dXJuIGZhbHNlOyAvLyBObyBvcHRpb24gbWF0Y2hlZC4KIH0KIAotdm9pZCBP
cHRpb25zOjpkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxl
LCBGSUxFKiBzdHJlYW0pCit2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCisgICAgY29u
c3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIq
IG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uIHNob3dEZWZhdWx0c09wdGlvbikKK3sK
KyAgICBpZiAodGl0bGUpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodGl0bGUpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpZCA9IDA7IGlk
IDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgICAgIGlmIChzZXBhcmF0b3IgJiYgaWQp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOworICAgICAgICBkdW1wT3B0
aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBvcHRpb25IZWFk
ZXIsIG9wdGlvbkZvb3Rlciwgc2hvd0RlZmF1bHRzT3B0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQg
T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7
Ci0gICAgaWYgKHRpdGxlKQotICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzXG4iLCB0aXRsZSk7
Ci0gICAgZm9yIChpbnQgaWQgPSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQrKykKLSAgICAg
ICAgZHVtcE9wdGlvbihsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9uSUQ+KGlkKSwgc3RyZWFtLCAi
ICAgIiwgIlxuIik7CisgICAgZHVtcEFsbE9wdGlvbnMoYnVpbGRlciwgRHVtcExldmVsOjpBbGws
IG51bGxwdHIsICIgIiwgbnVsbHB0ciwgbnVsbHB0ciwgRG9udFNob3dEZWZhdWx0cyk7CiB9CiAK
LXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLCBG
SUxFKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyKQordm9p
ZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYW0sIER1bXBMZXZlbCBsZXZlbCwg
Y29uc3QgY2hhciogdGl0bGUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGR1
bXBBbGxPcHRpb25zKGJ1aWxkZXIsIGxldmVsLCB0aXRsZSwgbnVsbHB0ciwgIiAgICIsICJcbiIs
IFNob3dEZWZhdWx0cyk7CisgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLAorICAgIGNv
bnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBTaG93RGVmYXVsdHNPcHRpb24g
c2hvd0RlZmF1bHRzT3B0aW9uKQogewogICAgIGlmIChpZCA+PSBudW1iZXJPZk9wdGlvbnMpCiAg
ICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCkBAIC00NDAsMTkgKzUzNywyNCBAQCB2
b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oRHVtcExldmVsIGxldmVsCiAgICAgaWYgKGxldmVsID09
IER1bXBMZXZlbDo6T3ZlcnJpZGRlbiAmJiAhd2FzT3ZlcnJpZGRlbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZnByaW50ZihzdHJlYW0sICIlcyVzOiAiLCBoZWFkZXIsIG9wdGlvbi5uYW1lKCkp
OwotICAgIG9wdGlvbi5kdW1wKHN0cmVhbSk7CisgICAgaWYgKGhlYWRlcikKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoaGVhZGVyKTsKKyAgICBidWlsZGVyLmFwcGVuZChvcHRpb24ubmFtZSgpKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgnPScpOworICAgIG9wdGlvbi5kdW1wKGJ1aWxkZXIpOwogCi0g
ICAgaWYgKHdhc092ZXJyaWRkZW4pIHsKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIgKGRlZmF1
bHQ6ICIpOwotICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigpLmR1bXAoc3RyZWFtKTsKLSAg
ICAgICAgZnByaW50ZihzdHJlYW0sICIpIik7CisgICAgaWYgKHdhc092ZXJyaWRkZW4gJiYgKHNo
b3dEZWZhdWx0c09wdGlvbiA9PSBTaG93RGVmYXVsdHMpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgKGRlZmF1bHQ6ICIpOworICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigpLmR1bXAo
YnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpIik7CiAgICAgfQogCi0gICAgaWYg
KG5lZWRzRGVzY3JpcHRpb24pCi0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiICAgLi4uICVzIiwg
b3B0aW9uLmRlc2NyaXB0aW9uKCkpOworICAgIGlmIChuZWVkc0Rlc2NyaXB0aW9uKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAuLi4gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG9w
dGlvbi5kZXNjcmlwdGlvbigpKTsKKyAgICB9CiAKLSAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwg
Zm9vdGVyKTsKKyAgICBidWlsZGVyLmFwcGVuZChmb290ZXIpOwogfQogCiB2b2lkIE9wdGlvbnM6
OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCkBAIC00NjYsMzMgKzU2OCwzNSBAQCB2b2lkIE9w
dGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAK
LXZvaWQgT3B0aW9uOjpkdW1wKEZJTEUqIHN0cmVhbSkgY29uc3QKK3ZvaWQgT3B0aW9uOjpkdW1w
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OmJvb2xUeXBlOgotICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVzIiwgbV9lbnRyeS5ib29sVmFsID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKG1fZW50cnkuYm9vbFZhbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OnVuc2lnbmVkVHlwZToKLSAgICAgICAg
ZnByaW50ZihzdHJlYW0sICIldSIsIG1fZW50cnkudW5zaWduZWRWYWwpOworICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnVuc2lnbmVkVmFsKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpkb3VibGVUeXBlOgotICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVsZiIsIG1fZW50cnkuZG91YmxlVmFsKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9lbnRyeS5kb3VibGVWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6OmludDMyVHlwZToKLSAgICAgICAgZnByaW50ZihzdHJlYW0sICIlZCIsIG1fZW50cnku
aW50MzJWYWwpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LmludDMyVmFs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpvcHRpb25SYW5nZVR5
cGU6Ci0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBtX2VudHJ5Lm9wdGlvblJhbmdlVmFs
LnJhbmdlU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5Lm9wdGlvblJh
bmdlVmFsLnJhbmdlU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6Om9wdGlvblN0cmluZ1R5cGU6IHsKICAgICAgICAgY29uc3QgY2hhciogb3B0aW9uID0g
bV9lbnRyeS5vcHRpb25TdHJpbmdWYWw7CiAgICAgICAgIGlmICghb3B0aW9uKQogICAgICAgICAg
ICAgb3B0aW9uID0gIiI7Ci0gICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBvcHRpb24pOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBidWlsZGVyLmFwcGVuZChvcHRp
b24pOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpnY0xvZ0xldmVsVHlwZTogewotICAgICAgICBmcHJp
bnRmKHN0cmVhbSwgIiVzIiwgR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkuZ2NMb2dM
ZXZlbFZhbCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJp
bmcobV9lbnRyeS5nY0xvZ0xldmVsVmFsKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAx
ODg1OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZ0J1aWxkZXI7Cit9Cit1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CisKIG5hbWVzcGFj
ZSBKU0MgewogCiAvLyBIb3cgZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8KQEAgLTgwLDExICs4NSwx
MyBAQCBwdWJsaWM6CiAKICAgICBib29sIGluaXQoY29uc3QgY2hhciopOwogICAgIGJvb2wgaXNJ
blJhbmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiAiPG51bGw+Ijsg
fQorICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUg
PiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9CiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKwogICAgIFJhbmdlU3RhdGUg
bV9zdGF0ZTsKICAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwogICAgIHVuc2lnbmVkIG1f
bG93TGltaXQ7CkBAIC0zNTksMTEgKzM2NiwxNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKKyAgICAvLyBQYXJzZXMgYSBzdHJp
bmcgb2Ygb3B0aW9ucyB3aGVyZSBlYWNoIG9wdGlvbiBpcyBvZiB0aGUgZm9ybWF0ICItLTxvcHRp
b25OYW1lPj08dmFsdWU+IgorICAgIC8vIGFuZCBhcmUgc2VwYXJhdGVkIGJ5IGEgc3BhY2UuIFRo
ZSBsZWFkaW5nICItLSIgaXMgb3B0aW9uYWwgYW5kIHdpbGwgYmUgaWdub3JlZC4KKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdGlvbnNM
aXN0KTsKKwogICAgIC8vIFBhcnNlcyBhIHNpbmdsZSBjb21tYW5kIGxpbmUgb3B0aW9uIGluIHRo
ZSBmb3JtYXQgIjxvcHRpb25OYW1lPj08dmFsdWU+IgogICAgIC8vIChubyBzcGFjZXMgYWxsb3dl
ZCkgYW5kIHNldCB0aGUgc3BlY2lmaWVkIG9wdGlvbiBpZiBhcHByb3ByaWF0ZS4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhEdW1wTGV2ZWws
IGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0ciwgRklMRSogc3RyZWFtID0gc3Rkb3V0KTsKLSAg
ICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKER1bXBMZXZlbCwgT3B0aW9uSUQsIEZJTEUqIHN0cmVh
bSA9IHN0ZG91dCwgY29uc3QgY2hhciogaGVhZGVyID0gIiIsIGNvbnN0IGNoYXIqIGZvb3RlciA9
ICIiKTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25z
KEZJTEUqLCBEdW1wTGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnNJbkFMaW5lKFN0cmluZ0J1
aWxkZXImKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlv
bnNBcmVDb2hlcmVudCgpOwogCiAgICAgLy8gRGVjbGFyZSBhY2Nlc3NvcnMgZm9yIGVhY2ggb3B0
aW9uOgpAQCAtMzk1LDYgKzQwOCwxNiBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9ucygpOwogCisg
ICAgZW51bSBTaG93RGVmYXVsdHNPcHRpb24geworICAgICAgICBEb250U2hvd0RlZmF1bHRzLAor
ICAgICAgICBTaG93RGVmYXVsdHMKKyAgICB9OworICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb25z
SWZOZWVkZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZGVy
JiwgRHVtcExldmVsLCBjb25zdCBjaGFyKiB0aXRsZSwKKyAgICAgICAgY29uc3QgY2hhciogc2Vw
YXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3Rl
ciwgU2hvd0RlZmF1bHRzT3B0aW9uKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmlu
Z0J1aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAorICAgICAgICBjb25zdCBjaGFyKiBvcHRp
b25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgU2hvd0RlZmF1bHRzT3B0aW9uKTsK
KwogICAgIC8vIERlY2xhcmUgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgb3B0aW9ucyBz
dG9yZToKICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBFbnRyeSBzX29wdGlvbnNbbnVtYmVyT2ZP
cHRpb25zXTsKICAgICBzdGF0aWMgRW50cnkgc19kZWZhdWx0T3B0aW9uc1tudW1iZXJPZk9wdGlv
bnNdOwpAQCAtNDExLDcgKzQzNCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAg
IHZvaWQgZHVtcChGSUxFKikgY29uc3Q7CisgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBj
b25zdDsKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAK
</data>
<flag name="review"
          id="284454"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>